Hap*_*mad 3 c# signalr asp.net-core-2.1 asp.net-core-signalr
这是另一个问题和答案的后续行动.呼叫HubContext.Clients.Caller或HubContext.Clients.Others来自控制器的影响是什么?我看到它取决于连接ID.在这种情况下它会有什么价值?
如果连接ID(以及因此Caller和Others)无效,那么(从控制器操作中)我如何获得可以与HubContext.Clients方法一起使用的连接ID(对于当前调用Web API的客户端)?
aar*_*ron 10
呼叫
HubContext.Clients.Caller或HubContext.Clients.Others来自控制器的影响是什么?我看到它取决于连接ID.在这种情况下它会有什么价值?
既不存在.Caller也没有.Others关于HubContext.Clients(类型的HubClients<THub>).
" 这是不可能访问那些IHubContext.Caller而且Others都依赖于知道哪个客户端调用者.当你在IHubContext是,我们不知道,有可能甚至是当前的调用者,因为你可以在一个MVC控制器动作等等 "
- aspnet/SignalR#2274(评论)
(从控制器操作中)我如何获得可以与
HubContext.Clients方法一起使用的连接ID(对于当前调用Web API的客户端)?
" 无法知道当前来电者是谁来自IHubContext "
- aspnet/SignalR#2274(评论)
" 如果您有权访问发起操作的用户的用户ID,您可以使用.Users(userId)该消息向该用户的所有连接发送消息.同样,您将SignalR连接添加到组并使用.Group(groupName) "
- aspnet 发送到该组/ SignalR#2274(评论)
您可以在调用API的客户端上获取连接ID,然后将其发送到控制器.
毂:
public string GetConnectionId()
{
return Context.ConnectionId;
}
Run Code Online (Sandbox Code Playgroud)
客户:
hub.invoke('getConnectionId')
.then(function (connectionId) {
// Send the connectionId to controller
});
Run Code Online (Sandbox Code Playgroud)