【发布时间】:2015-12-14 23:00:30
【问题描述】:
我正在尝试构建一个聊天应用程序,其中用户 ID 由他们自动生成的 signalR 连接 ID 表示。在页面刷新时,连接 ID 会在实例化新连接时更改。有没有办法将用户的连接 ID 状态保持到浏览器会话结束(即直到他在客户端结束会话)。
任何指南或文档?真的很有帮助。
我是信号员的新手。所以想知道很多搜索谷歌的东西。从这个网址我得到了一个类似的 sn-p http://kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/
他们说这是可能的。问题是如果我们引用页面,信号器通常会创建一个新的连接 ID。我想防止这种情况,但是如何.......
这个代码sn-p。
public class MyConnectionFactory : IConnectionIdFactory
{
public string CreateConnectionId(IRequest request)
{
if (request.Cookies["srconnectionid"] != null)
{
return request.Cookies["srconnectionid"];
}
return Guid.NewGuid().ToString();
}
}
$.connection.hub.start().done(function () {
alert("Connected!");
var myClientId = $.connection.hub.id;
setCookie("srconnectionid", myClientId);
});
function setCookie(cName, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = cName + "=" + c_value;
}
我怀疑它是否适用于所有信号器版本?如果不是,那么如何在新版本中处理它,特别是如果页面刷新,则不会生成新的连接 ID。寻找建议。
如果我们使用持久连接类而不是集线器,那么会发生什么.....在这种情况下,如果我们在客户端刷新页面,连接 ID 将保持不变?请指导。 谢谢
【问题讨论】: