私は、呼び出し元に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にメッセージを適切にフィルタリングする方法を教えてもらえますか?