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

时间:2015-02-12 02:33:17

标签: asp.net signalr signalr-hub

我有一个关于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,则会出现问题。

1 个答案:

答案 0 :(得分:5)

在集线器之外,显然没有呼叫者,因为服务器是启动者。

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

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

这将是独一无二的。