2

作成中のプロトタイプで SignalR を使用しています。メッセージを多数のクライアントにブロードキャストする必要がありますが、どのクライアントがどのメッセージを受け取るかについては、グループを使用して除外するのに十分なほど複雑なロジックがあります。代わりに、接続されている各クライアントを基本的にチェックしています。該当する場合は、List<> に追加されます。次に、次を使用してメッセージを送信します。

var clients = DetermineClients(msg);
foreach (var client in clients)
    client.Send(msg);

もちろん、グループを使用できれば、次のことができます。

var group = DetermineGroup(msg);
group.Send(msg);

...グループの「送信」メソッドは基本的に同じことを行うように見えるため、グループ内のクライアントを列挙し、それらに対して「送信」を呼び出します。これはこれを行う「正しい」方法ですか?または、その場で一時的なグループを作成する方法はありますか? グループまたは単一のクライアントの「動的」タイプは、私がこれを正しく行っているかどうかを判断することを困難にします。多数のクライアントへのブロードキャストを最適化するための魔法が舞台裏で行われている場合は、明らかにそれを使用したいと思います!

アドバイスをいただければ幸いです。さらに情報が必要な場合はお知らせください。

4

1 に答える 1

3

複雑な基準に基づいて同じメッセージを多数の異なるクライアントに送信しようとしているだけの場合、最善の策は、すべてのクライアントを含むグループを作成し、クエリを実行して基準に適合しないクライアントを見つけることです。 . 基準に適合しない接続 ID のリストを使用して、次のことができます。

Clients.Group("myGroupThatHasAllMyClients",myExcludedConnectionIds).bar();
于 2013-05-14T17:47:33.283 に答える