SignalR:如何将数据发送到IConnected.Connect()

时间:2012-09-18 08:22:28

标签: signalr

我在Connect()接口上实现IConnected方法,以便为正确的组添加新连接。除了一件事之外,这很有效:为了将用户添加到正确的组,我需要发送一个值以在此方法中读取。我尝试将属性添加到客户端集线器:

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始终为空。

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:37)

我通过将我的信息添加到查询字符串来解决这个问题,该查询字符串可用于IConnected.Connect()方法。

在.NET客户端上,您将查询字符串传递到HubConnection

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

在JS客户端上,在开始连接之前设置qs属性:

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

然后,您可以使用Connect()方法在服务器上访问此信息:

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