2012-09-18 15 views
19

IConnectedインターフェイスにConnect()メソッドを実装して、正しいグループに新しい接続を追加します。 1つのことを除いて、これはうまくいきます:ユーザーを正しいグループに追加するには、このメソッドで読み取る値を送信する必要があります。SignalR:IConnected.Connect()にデータを送信する方法

var uIHub = $.connection.uIHub; 
uIHub.SessionType = "Edit"; 

しかし、それはConnectメソッドからアクセス可能ではありません:私は、クライアントのハブにプロパティを追加しようとした

if (string.IsNullOrEmpty(Caller.SessionType) || Caller.SessionType == "Edit") { 
    sessionId = WAFContext.EditSession.SessionId.ToString();     
} else { 
    sessionId = WAFContext.ViewSession.SessionId.ToString(); 
} 
Groups.Add(Context.ConnectionId, sessionId); 

Caller.SessionTypeは常にnullです。

これを解決する方法の提案はありますか?

答えて

36

IConnected.Connect()メソッドで利用可能なクエリ文字列に自分の情報を追加して解決しました。 .NETクライアント上で

あなたHubConnectionにクエリ文字列を渡す:JSクライアントで

var connection = new HubConnection("http://localhost:8080/", "myInfo=12345"); 

、あなたは、接続を開始する前にqsプロパティを設定します。

$.connection.hub.qs = "myInfo=12345"; 

あなたがアクセスその後、することができますConnect()方法のサーバーに関するこの情報:

var myInfo = Context.QueryString["myInfo"]; 
Groups.Add(Context.ConnectionId, myInfo); 
+0

javascriptクライアントで同じことをする方法を知っていますか?私は以下を試しましたが、動作していません: var connection = $ .connection( "http:// localhost:61806 /"、 "sessionType = visit"); var uIHub = connection.uIubub; –

+1

これはうまくいくはずです: '$ .connection.hub.qs =" myInfo = 12345 "; $ .connection.hub.start(); ' –

+0

@akoeplingerは、このようにuseridとusernameのパラメータを渡すことは安全ですか?セキュリティ上の問題が発生する可能性がありますか? – Freshblood