2012-06-21 17 views
14

私はSignalRハブとグループに関するかなりの量を読んできました。特に、私はあなたが特定のグループの接続の数を得ることができないことに気づいた。SignalRグループ - クライアントまたはサーバで処理されるフィルタリング?

クライアントまたはサーバーで処理されるグループのフィルタリングはありますか?サーバーの場合、なぜSignalRはカウントを公開できませんか?クライアントの場合は、特定のクライアントにのみメッセージを送信する方法はありますか?

答えて

31

特定の接続の特定のグループにメッセージを送信すると、フィルタリングはサーバー上で実行されます(フィルタリングはありません。ただ1つの接続またはグループをアドレス指定するだけです)。

SignalRはpub subに基づいているため、接続自体のリストはありません。接続のリストを追跡したい場合は、接続を処理してイベントを切断し、それらをメモリまたは永続的なストレージに保持する必要があります。

私たちが保存している状態がノードを越えて拡大縮小することが原因で、接続のリストが表示されない理由があります。接続のリストを提供した場合、それは失敗のピットです。ファームに別のWebノードを追加すると、突然その状態を同期させる必要があるためです。個々の接続やグループを識別子で指定し、メッセージバスを使用してその識別子のすべてのサブスクライバにパ​​ブリッシュできるようにします。

+3

私は10,000のクライアントを持っていて、それに5つしかないグループに送ると、もう9,995はメッセージを受信せず、無視します。それを避けるために、サーバーはどのグループにいるのかを知る必要はありませんか? –

+10

* 10,000人のクライアントがいて、その中に5人しかいないグループに送信すると、残りの9,995人はメッセージを受信せず無視しますか?* 修正しても、受信しません。 *サーバがどのグループにいるのかを知る必要がないようにするには* いいえ、接続状態(グループのような)は接続自体で往復します。 – davidfowl

+0

グループメンバシップがクライアントによって私に与えられた場合、それは安全で変更不可能なのでしょうか? (例:グループ「分類済み」と「秘密」) – LamonteCristo

関連する問題