2

私はいくつかの場所を見てきましたが、それでもグループの使用方法に関する明確な指示を見つけることができません。フィルタリングにグループを使用しています(クライアントのサブセットにのみメッセージを配信します)。

OnConnectedイベントでサーバー側のグループにクライアントを参加させたいのですが。クライアントは、自分がどのグループに属しているかを知る必要はありません。

質問:

  1. OnReconnectedイベントも上書きする必要がありますか?

  2. イベントGroupManager.Addの結果として返されたタスクを返す必要がありますか?OnConnected複数のグループに参加したい場合は、おそらく結合されたタスクを作成する必要があります。右?

GroupManager.Add3-サーバー(実装を参照)がAddToGroupコマンドをクライアントに送信するのはなぜですか?これを回避する方法はありますか?たぶんClient.AllExcept(...)、サーバー上のグループメンバーシップを使用して手動で処理することによって(うん!)?

SignalRの最新バージョン(1.0.0.1)を使用しています

4

1 に答える 1

3
  1. OnReconnectedをオーバーライドする必要はありません。クライアントが再接続すると、以前に含まれていたすべてのグループに再参加します。
  2. 必ずしもそうする必要はありませんが、OnConnected内でそのグループに送信しようとすると(グループ追加タスクを返さないことを選択した場合)、タスクが完了するまで待つ必要があります。
  3. これを回避する必要はありません。必要な理由の1つは、#2のためです(クライアントは、それがどのグループに属しているかを知る必要があります)。再接続のためにグループを認証する場合は、いつでもハブパイプラインモジュールを作成し、BuildRejoiningGroups関数をオーバーライドして独自の検証を実行できます。

コメントへの回答

コメント1:はい
コメント2:タスクを返す必要があります。そうしないと、何も完了しません(これは仕様によるものです)。何を返すかわからない場合は、いつでもbase.OnConnected()を返すことができます。

GroupManager.Addを呼び出すと、接続が目的のグループにあることを表すタスクが返されます。グループに参加すると、クライアントはトークンを介して新しいグループに参加したことを通知されます。トークンは、接続が失われたために再接続する必要がある場合に、クライアントがグループに再参加できるようにします。

于 2013-03-18T02:49:32.137 に答える