2015-02-12 87 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