我正在尝试在ASP.NET webforms站点中使用Signalr实现即时消息传递。
到目前为止,我已经有了一个良好的开端,我可以从一个客户端发送一个信息给另一个客户,没有任何问题。
我的问题来自于维护跨asp.net请求的聊天窗口。
当用户打开聊天窗口并导航到站点上的新页面时,这将被视为断开连接并连接到signalr集线器。(客户端获得新的ConnectionID)。
这是一个问题,因为它意味着我不能确定这是一个用户首先连接(没有打开聊天窗口,只是登录到网站),或者他们是否有一个活动的聊天窗口,只是更改页面。
如果他们只是改变了页面,我想保持聊天窗口打开与信息显示。我可以从我们的数据库中重建会话,但是无法知道是否应该显示这个会话。
我已经考虑过使用某种超时机制(如果这段对话在最后X分钟内处于活动状态,然后显示在新页面上),但在我看来,这似乎有点笨拙。
由于我无法保存OnDisconnect中的活动会话(因为这不能使用任何参数),所以我必须使用某种轮询机制来保存上次打开会话窗口时的时间戳。
我想知道是否有人遇到过类似的问题,如果他们遇到了,他们是如何接近他们的。
任何帮助都是徒劳无功的。
发布于 2015-07-24 10:21:21
找到了解决办法。使用cookie跟踪页请求之间的活动会话ID。增加了使用超时值的好处,即使person注销,然后在指定的时间范围内再次登录。
感谢cdslnte触发了这个想法..。
https://stackoverflow.com/questions/31590877
复制相似问题