2017-03-09 1 views
0

Tout d'abord, je sais que nous ne pouvons pas accéder à la variable de session et la variable d'application dans SignalR. Mais mon exigence est que je veux augmenter ou diminuer le nombre d'utilisateurs actuellement connectés à partir de la méthode SignalR OnConnect() et OnDisconnect(). Que j'ai déjà fait en utilisant le code ci-dessous.Comment définir la variable d'application dans la classe SignalR Hub?

SignalR Classe Hub: -

public class SampleHub : Hub 
{ 
    // Use this variable to track user count 
    private static int _userCount = 0; 

    // Public hub methods 
    : 

    // Overridable hub methods 
    public override Task OnConnected() 
    { 
     _userCount ++; // this I want to set in Application variable 
    } 
    public override Task OnReconnected() 
    { 
     _userCount ++; // this I want to set in Application variable 
    } 
    public override Task OnDisconnected(bool stopCalled) 
    { 
     _userCount --; // this I want to set in Application variable 
    } 
} 

Après avoir défini les valeurs dans _userCount variables Lorsqu'un autre utilisateur connecté dans le système. Dans le bouton de connexion cliquez sur l'événement Je veux vérifier if _userCount >= 11, puis afficher le message

"VOUS AVEZ ATTEINT LA LIMITE MAXIMALE DE L'UTILISATEUR SIMULTANÉ!"

Mais je ne suis pas en mesure d'utiliser la variable d'application dans SignalR - Alors Ma question est Comment puis-je faire de l'accès de _userCount variable dans Login.aspx.cs ou toute autre page .aspx.cs. Puis-je appeler une méthode de serveur à partir de SignalR Hub?

toute aide sera grandement appréciée!

Merci Vous

Répondre

1

Faites votre _userCount publique variable et ajouter une référence de classe SampleHub à Login.aspx.cs ou toute autre page cs que vous voulez et accéder à votre variable _userCount.

public static int _userCount=0; 

Sur Login.aspx.cs utilisation page comme ceci:

int usercount = SampleHub._userCount; 

Espérons que cela vous aidera