我在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
始终为空。
有关如何解决此问题的任何建议?
答案 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);