我实现 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
始终为空。关于如何解决这个问题的任何建议?
最佳答案
我通过将我的信息添加到查询字符串中解决了这个问题,该查询字符串可在 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);
关于SignalR:如何将数据发送到 IConnected.Connect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12473030/