2015-02-12 181 views
5

我在思考SignalR的呼叫方法时有个问题。在hub方法中,我们可以像这样调用客户端函数。在集线器环境外调用SignalR集线器中的呼叫方法

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); 

但现在我们不主张基于认证,所以如果同一个用户nm被记录,这将是一个问题。

回答

5

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

如果您担心独特的用户名,您需要implement a custom IUserIdProvider,或者您需要以其他方式manage connection ids per user。那么你可以打电话

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

这将是唯一的。

+0

将用户身份映射到集线器身份验证是我猜最好的方法,但我们实现了自定义Iprincipal。要采取偷看链接.. – 2015-02-13 00:28:32

+0

解决我的问题..是的IUserIdProvider映射与我的Iprincipal解决连接映射 – 2015-02-27 00:25:55

相关问题