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 触发了这个想法...