Signalr:跨页面请求跟踪用户状态
Signalr: Tracking User State across page requests
我正在尝试在 ASP.NET 网络表单站点中使用 Signalr 实现即时消息传递。
到目前为止,我已经有了一个良好的开端,我可以毫无问题地从一个客户端向另一个客户端发送消息。
我的问题来自于跨 asp.net 个请求维护聊天 windows。
当用户打开聊天 window 并导航到站点上的新页面时,这算作断开连接并重新连接到信号器中心。 (客户端获取新的 ConnectionID)。
这是一个问题,因为这意味着我无法确定这是用户第一次连接(没有聊天 window 打开,只是登录到站点)或者他们是否有活跃的聊天 window 和刚换了页。
如果他们刚刚更改了页面,我想保持聊天 window 打开并显示消息。我可以从我们的数据库中重建对话,但无法知道是否应该显示此对话。
我考虑过使用某种超时机制(如果此对话在最近 X 分钟内处于活动状态,则在新页面上显示)但这在我看来有点笨拙。
由于我无法在 OnDisconnect 中保存活动对话(因为它不能接受任何参数)我将不得不使用某种轮询机制来保存上次对话 window 的时间戳打开。
我想知道是否有人 运行 遇到过类似的问题,如果遇到过,他们是如何解决这些问题的。
任何帮助都适用...
找到解决方案。使用 cookie 跟踪页面请求之间的活动对话 ID。增加了使用超时的好处,即使用户注销并在指定的时间范围内再次登录也是如此。
感谢 cdslnte 触发了这个想法...
我正在尝试在 ASP.NET 网络表单站点中使用 Signalr 实现即时消息传递。
到目前为止,我已经有了一个良好的开端,我可以毫无问题地从一个客户端向另一个客户端发送消息。
我的问题来自于跨 asp.net 个请求维护聊天 windows。
当用户打开聊天 window 并导航到站点上的新页面时,这算作断开连接并重新连接到信号器中心。 (客户端获取新的 ConnectionID)。
这是一个问题,因为这意味着我无法确定这是用户第一次连接(没有聊天 window 打开,只是登录到站点)或者他们是否有活跃的聊天 window 和刚换了页。
如果他们刚刚更改了页面,我想保持聊天 window 打开并显示消息。我可以从我们的数据库中重建对话,但无法知道是否应该显示此对话。
我考虑过使用某种超时机制(如果此对话在最近 X 分钟内处于活动状态,则在新页面上显示)但这在我看来有点笨拙。
由于我无法在 OnDisconnect 中保存活动对话(因为它不能接受任何参数)我将不得不使用某种轮询机制来保存上次对话 window 的时间戳打开。
我想知道是否有人 运行 遇到过类似的问题,如果遇到过,他们是如何解决这些问题的。
任何帮助都适用...
找到解决方案。使用 cookie 跟踪页面请求之间的活动对话 ID。增加了使用超时的好处,即使用户注销并在指定的时间范围内再次登录也是如此。
感谢 cdslnte 触发了这个想法...