7
votes

Obtenez connecté en dehors du hub, Signalr

Comment puis-je obtenir les clients connectésID / clientID en dehors du moyeu? un clientide .


0 commentaires

4 Réponses :


4
votes

Vous pouvez implémenter iConnected / IDisconnect sur le hub et garder manuellement une trace des clients par exemple dans une base de données, puis retirez la liste lorsque vous avez besoin. L'exemple ci-dessous est depuis le Signalr Wiki

public class Status : Hub, IDisconnect, IConnected
{
    public Task Disconnect()
    {
        return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Connect()
    {
        return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Reconnect(IEnumerable<string> groups)
    {
        return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
    }
}


1 commentaires

Même nous enregistrons l'identifiant, comment savons-nous quelle identification est une identification de connexion actuelle en dehors du hub? Seul le temps ne peut pas être correct s'il y a tellement de connexions.



4
votes

Pourquoi serait-il un identifiant de connexion dans le contexte global? Quelle connexion serait-elle en référence? Lorsque vous obtenez le contexte global, vous accédez à un canal à sens unique du serveur au client et peut envoyer des messages dessus. Vous n'avez pas accès à l'identifiant de connexion du hub puisque vous n'apprenez-vous pas. Vous pouvez les stocker quelque part dans votre application si vous devez les utiliser.


2 commentaires

Tout le monde ne construit pas les serveurs de discussion. Je pense que l'implicite était comment obtenir le correspondant utilisé par le client actuel afin qu'un message puisse être envoyé à cet utilisateur / session. Je me demande comment procéder à cela dans une action MVC d'un client où je souhaite envoyer des messages de progression. Il existe certaines techniques pour la mise en cache des connexides par le nom d'utilisateur, mais je n'ai rien vu de manière décente pour permettre au même utilisateur ayant plusieurs connexions qui sont souvent le cas avec des applications Web. Idées pour ça? Merci.


Vous l'envoyez du client à votre action MVC. Il est disponible sur le client via $ .Connection.hub.id.



0
votes

Voici la solution. Vous pouvez appeler une méthode à l'intérieur du HUB code> et vous pouvez renvoyer l'ID de connexion code> à partir de là.

dans le contrôleur strong> p>

public string GetConnectionID()
{
     return "Your Connection ID as String"  //This can be stored in a list or retrieved in any other method
}


0 commentaires

0
votes

J'ai changé @DavidFowL commentaire dans une réponse - vous l'envoyez du client à votre action MVC. Il est disponible sur le client via $ .Connection.hub.id xxx

et ensuite faire ce que vous voulez avec elle alors.


0 commentaires