2

こんにちは私はWebユーザーにメッセージを配信するようにsignalRを設定しようとしています。問題は、1つのサイトが異なる「エリア」と「ユーザータイプ」を保持していることです。

エリアは、ユーザーがurlパラメーターを渡してサイトにアクセスしたときに決定され、セッション変数に格納されます。「ユーザータイプ」はデフォルトではログインせず、ユーザーがそこにログインしたときに変更されます( Webサービス)およびUserオブジェクトに格納されます。

私の目的は、ユーザーがサイトにアクセスしたときにsignalRを使用してハブに接続し、セッションの「エリアID」とコンテキストのユーザーオブジェクトの「ユーザータイプID」を使用して、ユーザーconnectionIdをグループ名に追加することでした。

私が抱えている問題は、ユーザーIDを取得できるが、エリアIDに関してはsignalRがセッションにアクセスできないことです。私はsignalRでセッションを使用できないようにする理由を理解していますが、これを有効にする方法、またはこれらの一意のグループを作成できるようにユーザー領域にアクセスできる別の方法があるかどうかは誰にもわかりません。

4

1 に答える 1

1

ユーザー領域がわかっている場合は、接続したらクライアントから関数を呼び出して、ユーザーをそのグループに追加できます。

ページの読み込み:

ClientScript.RegisterClientScriptBlock(this.GetType(), "areaKey", "var theAreaTheyBelongTo= '" + serverSideAreaTheyBelongTo + "'", true);

ハブ上:

public void SubscribeToArea(string area)
{
    Groups.Add(Context.ConnectionId, area);
}

クライアントの場合:

$.connection.hub.start(function () {
    yourHubName.subscribeToArea(theAreaTheyBelongTo);
});
于 2012-11-22T10:58:18.073 に答える