我在我的 ASP.NET Web 应用程序中使用 SignalR。在这里,我使用IHubContext
. 我需要获取当前用户的连接 ID,以便仅向当前用户发送消息。如何在客户端获取连接 ID?
问问题
31070 次
7 回答
56
是的。您可以使用$.connection.hub.id
.
于 2013-10-21T01:58:10.613 回答
2
这对我有用:
var hub = $.connection.someHub;
// After connection is started
console.log(hub.connection.id);
于 2017-11-26T14:57:02.050 回答
2
还有另一种方法,您可以通过调用方法将连接 ID 从集线器获取到控制器中,hub
然后您可以从那里返回所需ID
的。
控制器代码
var HubContext = GlobalHost.ConnectionManager.GetHubContext<"ChatHub">(); //`ChatHub` can be your Hub Name
ChatHub HubObj= new ChatHub();
var RequiredId= HubObj.InvokeHubMethod();
集线器内的代码
public string InvokeHubMethod()
{
return "ConnectionID" //ConnectionID will the Id as string that you want outside the hub
}
于 2017-08-29T08:54:09.563 回答
2
对于 .NET 客户端,它位于Connection
对象上,由HubConnection
.
Connection.ConnectionId
所以通常可以在
hubConnection.ConnectionId
于 2017-02-04T00:50:37.503 回答
1
服务器:Context.ConnectionId => "dJSbEc73n6YjGIhj-SZz1Q"
客户 :
this._hubConnection
.start()
.then(() => {
var hub = this._hubConnection ;
var connectionUrl = hub["connection"].transport.webSocket.url ;
console.log(connectionUrl);
=> wss://localhost:5001/notify?id=dJSbEc73n6YjGIhj-SZz1Q
你可以提取id。(远不是一个完美的解决方案)
于 2018-11-10T16:32:36.110 回答
0
使用以下代码对我有用。
在枢纽类中。
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();
}
在中心类文件中创建以下类
public class MyUserType
{
public string ConnectionId { get; set; }
public string UserName { get; set; }
}
在中心类之外。
var con = MyHub1.MyUsers;
var conId =con.Select(s => s.Value).Where(s => s.UserName == User.Identity.Name).FirstOrDefault();
于 2017-05-09T21:29:08.203 回答
0
要获取完整的中心网址,您可以说:hubConnection.connection.transport.webSocket.url
这类似于:"wss://localhost:1234/myHub?id=abcdefg"
正则表达式获取 ID:
var r = /.*\=(.*)/
var id = r.exec(url)[1]
于 2018-12-14T15:06:06.013 回答