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