SignalR - Vérifier si un utilisateur est toujours connecté
J'ai un hub avec la méthode qui est appelée à côté client. Cette méthode lance un timer avec un délégué qui circule toutes les 10 secondes. Car il n'est pas judicieux de continuer à courir ce délégué, si personne n'est connecté au hub, je veux vérifier si tous les utilisateurs sont toujours connectés à partir de l'intérieur du délégué avant de me le remettre. Est-il possible de faire cela?
OriginalL'auteur edobry | 2012-12-03
Vous devez vous connecter pour publier un commentaire.
Sans doute le plus utilisé de la solution est de garder une variable statique contenant les utilisateurs actuellement connectés et dominante
OnConnect
etOnDisconnect
ou la mise en œuvre deIDisconnect
selon la version que vous utilisez.Vous mettre en place quelque chose comme ceci:
Sont il des problèmes de simultanéité avec plusieurs threads tentent d'accéder à la même ressource?
Non seulement ce n'est pas fiable en raison de la durée de vie du modèle de hub, il se casse la possibilité de mise à l'échelle avec un fond de panier. La seule vraie réponse est à suivre en ligne le statut d'un cache partagé comme redis ou appfabric.
OriginalL'auteur cillierscharl
Si vous enregistrez votre connectionId dans votre base de données, vous pouvez vérifier ceci:
using Microsoft.AspNet.SignalR.Transports
Aussi ne devrait pas .Transports est à l'intérieur de l'Assemblage de Base... la poisse! Voir: msdn.microsoft.com/en-us/library/...
OriginalL'auteur chemitaxis
De http://forums.asp.net/t/1829432.aspx/1?How+faire+je+obtenir+liste+de+connecté+clients+sur+signalr+
De sorte que vous devriez être en mesure de les mettre en contexte.Clients.Le comte.
Que la poste fait aussi référence à la wiki qui a beaucoup de bonnes infos. Vous pouvez essayer d'utiliser le OnConnected/OnDisconnected des exemples à suivre les utilisateurs, et quand vous arrivez à zéro les utilisateurs arrêter votre appel.
OriginalL'auteur Tim Hobbs