21

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

关于如何解决这个问题的任何建议?

4

1 回答 1

43

我通过将我的信息添加到查询字符串中解决了这个问题,该方法在该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);
于 2012-09-18T08:55:58.897 回答