gpt4 book ai didi

asp.net-mvc-3 - signalR 维护用户连接 ID

转载 作者:行者123 更新时间:2023-12-04 21:15:49 25 4
gpt4 key购买 nike

我正在尝试为用户维护一个连接 ID,我的意思是即使他刷新页面他也获得相同的连接 ID

这是我到现在为止能做的

javascript 部分

// Start the connection            

$.connection.hub.start(function () { chat.join(projectId, userId, userName); }).done(function () {
alert("Connected!");
var myClientId = $.connection.hub.id;
setCookie("srConnectionid", myClientId, 1);

});


function setCookie(cName, value, exdays) {

try{

var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);

var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate);
document.cookie = cName + "=" + c_value;

}

catch(err){

alert(err.Description);

}
}

然后我创建了一个像这样继承 IConnectionIdFactory 的类
  public class MyConnectionFactory : IConnectionIdFactory
{
public string CreateConnectionId(IRequest request)
{
if (request.Cookies["srconnectionid"] != null)
{
return request.Cookies["srconnectionid"];
}

return Guid.NewGuid().ToString();
}
}

我在 Application_start() 中注册了上面的类,如下所示
protected void Application_Start()
{

AspNetHost.DependencyResolver.Register(typeof(IConnectionIdFactory), () => new MyConnectionFactory());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}

我的问题是每次在 CreateConnectionId 中调用 MyConnectionFactory 类
request.Cookies["srconnectionid"] 每次都为空,所以每次都会为用户分配新的连接 ID。我只能找到一个帮助我维护连接 ID 的链接。它是 http://www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances

任何人都可以建议如何解决我的问题,或者是否有任何其他方法可以为同一用户重用连接 ID...?

Cookie 值是在客户端设置的。我已经尝试了 2 天了。这会很有帮助

提前致谢

最佳答案

cookie 的过期日期应该是 UTC 字符串(您没有这样做,所以很可能服务器将您的 cookie 视为已过期)。像这样改变你的代码:

var cValue = escape(value) + ((exdays==null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = cName + "=" + cValue;

或者你可以直接使用 jQuery Cookie plugin用于设置 cookie。

更新

此外,您提供的代码中 cookie 的名称也不一致。您正在设置名为“userConnectionid”的 cookie,但试图通过名称“srconnectionid”进行访问。请检查您是否在那里没有拼写错误。

关于asp.net-mvc-3 - signalR 维护用户连接 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9518394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com