comment obtenir SignalR user connection id à l'extérieur de la classe hub?

Salut j'utilise le Signal R dans mon application asp dot net web. J'appelle un client de l'extérieur à hub class en utilisant IHubContext. Je dois obtenir l'id userconnection courante afin d'envoyer le message à l'utilisateur appelé courant seulement.Comment puis-je l'obtenir?

24
demandé sur selvakumar 2013-10-18 14:57:43
la source

5 ответов

Yep. Vous pouvez utiliser $.connexion.hub.id

41
répondu Ruchira 2013-10-21 05:58:10
la source

il y a un autre moyen aussi, vous pouvez obtenir l'id de connexion dans votre controller depuis hub en invoquant une méthode de hub et vous pouvez retourner le nécessaire ID à partir de là.

Code Du Contrôleur

var HubContext = GlobalHost.ConnectionManager.GetHubContext<"ChatHub">(); //`ChatHub` can be your Hub Name
ChatHub HubObj= new ChatHub();
var RequiredId= HubObj.InvokeHubMethod();

Code à l'intérieur du Moyeu

public string InvokeHubMethod()
{
     return "ConnectionID"  //ConnectionID will the Id as string that you want outside the hub
}
2
répondu Rushik 2017-08-29 11:54:09
la source

Cela fonctionne pour moi:

var hub = $.connection.someHub;
// After connection is started
console.log(hub.connection.id);
1
répondu Marc 2017-11-26 17:57:02
la source

pour un Client .NET il est sur le Connection objet, hérité de l' HubConnection.

Connection.ConnectionId

donc typiquement peut être trouvé sur

hubConnection.ConnectionId
0
répondu Simon_Weaver 2017-02-04 03:50:37
la source

utiliser le code suivant fonctionne pour moi.

dans la classe hub.

 public static ConcurrentDictionary<string, MyUserType> MyUsers = new ConcurrentDictionary<string, MyUserType>();



    public override Task OnConnected()
    {
        MyUsers.TryAdd(Context.User.Identity.Name, new MyUserType() { ConnectionId = Context.ConnectionId,UserName=Context.User.Identity.Name });
        string name = Context.User.Identity.Name;

       Groups.Add(Context.ConnectionId, name);

        return base.OnConnected();
    }

dans le fichier hub class créer la classe suivante

public class MyUserType
{
    public string ConnectionId { get; set; }
    public string UserName { get; set; }

}

et en dehors de la classe hub.

  var con = MyHub1.MyUsers;
       var conId =con.Select(s => s.Value).Where(s => s.UserName == User.Identity.Name).FirstOrDefault();
0
répondu saad elshazly 2017-05-10 00:29:08
la source

Autres questions sur