2013-05-15 1 views
0

J'ai une application self-hosted semblable à un scénario dans lequel j'ai une méthode qui diffuse en continu aux groupes (si quelqu'un a "joint" ou non). Quelque chose comme:signalR Groups.Remove ne fonctionne pas

var aTimer = new System.Timers.Timer(2000); 
aTimer.Elapsed += (sender, e) => 
{ 
    // broadcast to listeners whether they are listening or not 
    IHubConnectionContext _clients = GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients; 

    _clients.Group("group1FixedName").showMessage("Some message for group 1 only");  
    _clients.Group("group2FixedName").showMessage("Some message for group 2 only");  
    // etc 
}; 
aTimer.Start(); 

J'avais récemment mis à jour à la version 1.1.0 de beta1. J'ai commencé à observer que la méthode "remove" ne fonctionne pas car le "client" (web browser) reçoit toujours des messages du groupe "other" même si j'ai lancé un "leave". Notez que «quitter» le groupe ne signifie pas fermer le navigateur Web. Il est toujours dans la même page (Single Page Application) et quitter/rejoindre un groupe est déclenché par une sélection (zone de liste déroulante par exemple).

code dans le moyeu:

public Task Leave(string groupName) 
{ 
     return Groups.Remove(Context.ConnectionId, groupName) 
       .ContinueWith(z => Clients.Caller.showCallerMessage("You are now leaving " + groupName)); 

} 

code javascript client "quitter le groupe":

chat.server.leave("group1FixedName"); 

code javascript client pour "rejoindre le groupe":

chat.server.join("group1FixedName"); 

Code dans le Hub pour rejoindre:

public Task Join(string groupName) 
{ 
     return Groups.Add(Context.ConnectionId, groupName) 
       .ContinueWith(z => Clients.Caller.showCallerMessage("You are now listening to " + groupName)); 

} 

Y at-il un problème avec ma mise en œuvre ici?

+0

Les extraits que vous montrez sont corrects. Pouvez-vous faire un exemple d'application et le mettre sur github? – davidfowl

+0

Merci @dfowler, je vais faire une version réduite de mon application, et assurez-vous que je réplique le problème en premier. – alpinescrambler

+0

J'ai téléchargé les exemples d'applications ici: https://github.com/ericpanorel/SignalrDebugForDfowler Pendant le débogage, j'ai trouvé que les bits bêta sur l'application auto-hôte fonctionnaient toujours (pas de problème), même si j'avais les derniers bits pour le client. Lorsque j'ai également mis à jour les bits pour l'application auto-hébergée, le problème décrit apparaît déjà. – alpinescrambler

Répondre

0

C'est le bogue n ° 2040 introduit en 1.1.0beta. L'équipe travaille à la réparer.

Questions connexes