2017-04-25 2 views
0

私は、呼び出し元にpingメッセージを返さない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); 

これが動作しないいくつかの理由について、メッセージが到着した上でハブを呼び出し、Clients.Othersにディスパッチされますが、呼び出し元のクライアントのonBatteryChangedハンドラも呼び出されます。

SignalRにメッセージを適切にフィルタリングする方法を教えてもらえますか?

答えて

0

今後この問題を抱える他の人にとっては、この問題は明らかに命名法の1つです。具体的には、私のハブ関数には、 "BatteryChanged"というメソッドがあり、これはクライアントで "onBatteryChanged"というメソッドを呼び出します。 SignalRの内部で「BatteryChanged」メソッドの前に「on」が付いていて、命名の競合が発生するようなことが起こっているようです。私の "onBatteryChanged"関数の名前を "handleBatteryChanged"に変更するだけで問題は解決しました。

関連する問題