3

SignalR ライブラリのグループ機能を正しく実装していることを確認したいと考えています。

私がやっていることは、ユーザーが特定のプロジェクトについて助けを求められるようにすることです。プロジェクトを開始したユーザーは、プロジェクトのコラボレーション テーブルに他のユーザーを追加できます。

Collaboration 
(
    UserID Uniqueidentifier,
    ProjectID INT
)

いずれかのユーザーがコラボレーション モードに入った場合、そのユーザーをグループに追加したいので、別のユーザーがログオンしてコラボレーション モードに入ると、同じグループに追加されます。グループには常に という名前が付けられますProjectID

そのため、ユーザーがログオンしてプロジェクトを開くと、そのプロジェクトがコラボレーション テーブルにある場合、それらをGroups.Add(Conext.ConnectionId,projID);に追加します。


ここに私の質問があります:

ユーザーがクライアントから接続し、projID を持つグループが存在しない場合に OnConnected が呼び出されると、これはエラーをスローするか、シグナルはそのグループをオンザフライで作成しますか?

    public override Task OnConnected(string projID)
    {
        return Groups.Add(this.Context.ConnectionId, projID);
    }

クライアントがブラウザを閉じたとき、それは OnDisconnected が呼び出されたときですか? そして、何らかの理由でそのユーザーが前述のprojIDグループに属していない場合、これはスローされてエラーになりますか、それともシグナルはこれを処理しますか?

    public override Task OnConnected(string projID)
    {
        return Groups.Add(this.Context.ConnectionId, projID);
    }

OnReconnected の場合、これは、ユーザーがログオフして別のことを行ってから再度ログオンすると、接続が失われる前に所属していたグループに自動的に追加されるということですか?

    public override Task OnReconnected(string projID)
    {
        return Clients.Group(projID).rejoined(Context.ConnectionId,
            DateTime.Now.ToString());
    }

上記のすべてのメソッドについて、オーバーライドされた各メソッドの基本メソッドを呼び出す必要がありますか?

4

1 に答える 1

7
  1. Groups.Add()特定の を初めて呼び出すと、SignalR によってグループが作成されますprojID。エラーは発生しません。
  2. OnDisconnected接続が切断されるたびに呼び出されます。呼び出すStop()と、完全に切断され、OnDisconnected メソッドがすぐに呼び出されます。ブラウザを閉じただけの場合、 OnDisconnectedメソッドは通常、約 30 秒の遅延の後に呼び出されます (これを制御する構成スイッチがあります)。
  3. ユーザーは、接続 ID に基づいて特定のグループに結び付けられます。ユーザーが別の接続 ID で戻ってきた場合は、適切なグループに再度追加する必要があります。このようなケースをどのように処理できるかについては、SignalR で提供されているチャット サンプルを参照してください。
于 2013-02-18T08:29:52.767 に答える