0

私のデータベースでは、ユーザーはいくつかのエリア権限を持っています。私がやりたいのは、この領域をSignalRのグループに追加することです。したがって、ユーザーがサインインするときに、このグループをデータベースから取得してSession ["groups"]に保存し、ユーザーがsignalRに接続するときに、このセッションを使用してグループを追加します。このようなもの:

public Task Connect()
{
    var groups = (string[])Session["groups"];
    foreach (var group in groups)
    {
        Groups.Add(Context.ConnectionId, group);
    }
}

どうすればこれなどを行うことができますか?

4

1 に答える 1

0

ここで述べたように、SignalRハブ-グループの管理

グループへの接続を追加したり、特定のグループにメッセージを送信したりできます。グループはサーバー上で永続化されないため、アプリケーションは、グループカウントなどを実現できるように、どのグループにどの接続があるかを追跡する責任があります。

つまり、データを保持するために辞書などの独自の構造を提供する必要があります。

たとえば、グループ名をキーとして保持し、領域のリストを値として保持する辞書(または、最適な場合はその逆)。

したがって、ユーザーの新しい領域ごとに、最初にこの辞書を更新してから、変更されたグループにユーザーをサブスクライブします。

Groups.Add(Context.ConnectionId, group);

それでも、上記のリンクとここのトピックベースのパブサブデザインパターンを見てください。タイトルにWCFが付いているので、ためらわないでください。彼がFilterクラスを実装する方法を詳しく見てみましょう

于 2012-11-06T07:26:01.270 に答える