私たちのアプリケーションでは、ランダムな数のクライアントにプッシュ通知を送信する必要があります。 のメッセージが送信される直前まで、これらのユーザーの静的グループを作成する方法はありません。データは分類されており、特定のユーザーのみが見ることができるためです。SignalRはランダムな数のクライアントにメッセージを送信します
私たちはSignalRに通知を提供しようとしていますが、 "送信"方法を実装する最良の方法は何か疑問があります。
ランダムにグループ化された最大3000人のユーザーに約20件のメッセージを送信するための、最もスケーラブルでパフォーマンスの良いソリューションはどれですか。
クライアントメソッドを使用しますか?
APIにおける「クライアント」の方法は、各クライアントに送る接続ID
Clients.Clients(clientIds).NewMessage(message);
のリストを受け入れ?動的グループを作成
Clients.Client(clientId).NewMessage(message);
?
送信する直前にグループを作成できます。
var groupName = Guid.NewGuid().ToString();
foreach (var clientId in clientIds)
{
await Groups.Add(clientId, groupName);
}
Clients.Group(groupName).NewMessage(message);
- メッセージがグループに属しているすべてのクライアントに配信されたかどうかを知る方法はありますか?グループにメッセージを送信した後は、グループが1回だけ有効になるため、グループを削除する必要があります。
ありがとうございます。
答えていただきありがとうございます。グループに関しては、どの戦略をお勧めしますか?グループの再利用はありません。毎秒約20のグループを作成していますので、SignalRで非常に多くのグループを持つことによるパフォーマンスへの影響は大きいと思います。 – Paulo
ハイパウロ。グループは、接続されていないときに削除されます。 –
再びFlorinに感謝します。しかし、ユーザーのいずれかが常に接続されている場合、私はすべてのグループが永遠に生きるようにします。これがパフォーマンスに影響を与えるとは思わない? – Paulo