我有一个关于SignalR的Caller方法的问题。在hub方法中,我们可以像这样调用客户端函数。
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);
但现在我们不是基于声明的身份验证,因此如果记录相同的usernm,则会出现问题。
答案 0 :(得分:5)
在集线器之外,显然没有呼叫者,因为服务器是启动者。
如果您担心唯一的用户名,则需要implement a custom IUserIdProvider
,或者您需要以其他方式manage connection ids per user。然后你可以打电话
context.Clients.Client(connectionId).reportProgress();
这将是独一无二的。