在集线器上下文之外调用 SignalR 集线器中的 Caller 方法

calling the Caller method in SignalR hub outside the hub context

我对 SignalR 的 Caller 方法有疑问。在集线器方法中,我们可以像这样调用客户端函数。

Clients.Caller.addContosoChatMessageToPage(name, message);

但是当我从集线器上下文外部调用它时,它找不到或没有实现??像这样..

 var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
 context.Clients.Caller.reportProgress(recordCount,totalCount);

有人可以在这部分启发我还是有其他实现方式.. 现在我用它来实现这个

 var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
 context.Clients.User(CurrentUser.Usernm).reportProgress(recordCount,totalCount);

但现在我们不是基于声明的身份验证,因此如果登录了相同的用户名就会出现问题..

在集线器之外,显然没有调用者,因为服务器是发起者。

如果您担心用户名的唯一性,则需要 implement a custom IUserIdProvider, or you need to manage connection ids per user 以其他方式解决。然后你可以打电话

context.Clients.Client(connectionId).reportProgress();

这将是独一无二的。