2017-04-25 35 views
0

我正在嘗試寫一個不會將消息發回給調用者的SignalR集線器。我實現了一個名爲「BatteryChanged」的處理程序,它在所有連接的客戶端中簡單地調用「onBatteryChanged」。我的理解是,我應該使用Others過濾掉來電:如何使用ASP.NET SignalR獲得「其他」?

public class MyHub : Hub 
{ 
    public void BatteryChanged(double level) 
    { 
     Clients.Others.onBatteryChanged(level); 
    } 
} 

我的一個和唯一的客戶端(此測試至少)是初始化像這樣的連接WPF應用程序:

Connection = new HubConnection(ServerURI); 
HubProxy = Connection.CreateHubProxy("myHub"); 

// set up SignalR handlers 
HubProxy.On<double>("onBatteryChanged", (battery) => 
{ 
    // do something with the message here 
}); 

一旦連接已經建立我的WPF客戶端調用輪轂上的方法:

this.HubProxy.Invoke("BatteryChanged", level); 

出於某種原因,這並不工作,郵件到達上集線器並被分派給客戶端。其他但調用客戶端中的onBatteryChanged處理程序也被調用。

誰能告訴我如何讓SignalR正確地過濾消息?

回答

0

對於那些在將來遇到此問題的人來說,問題顯然是命名之一。具體來說,我的中心功能包含一個名爲「BatteryChanged」的方法,它在客戶端調用一個名爲「onBatteryChanged」的方法。 SignalR內部會出現一些內容,它們將「BatteryChanged」方法加上「on」前綴,這會產生命名衝突。只需將我的「onBatteryChanged」函數的名稱更改爲「handleBatteryChanged」即可解決問題。

相關問題