信号员:跨页面请求跟踪用户状态

时间:2015-07-23 14:49:54

标签: c# asp.net webforms signalr

我正在尝试使用ASP.NET webforms网站中的Signalr实现即时消息。

到目前为止,我已经取得了良好的开端,我可以从一个客户端向另一个客户端发送消息而没有任何问题。

我的问题来自于维护asp.net请求的聊天窗口。

当用户打开聊天窗口并导航到站点上的新页面时,这将被视为断开连接并与信号器中心建立新连接。 (客户端获取新的ConnectionID)。

这是一个问题,因为这意味着我无法确定天气这是用户首次连接(没有打开聊天窗口,只是登录到网站),或者他们是否有活动的聊天窗口和刚刚更改的页面。

如果他们刚刚更改了页面,我想打开聊天窗口并显示消息。我可以从我们的数据库中重建对话,但无法知道是否应该显示此对话。

我考虑过使用某种超时机制(如果此对话在最后X分钟内处于活动状态,然后在新页面上显示),但在我看来这有点笨拙。

由于我无法在OnDisconnect中保存活动对话(因为这不能接受任何参数),我将不得不使用某种轮询机制来保存上次对话窗口打开时的时间戳。

我想知道有没有人遇到任何类似的问题,如果他们有,他们是如何接近他们的。

任何帮助都是适当的......

1 个答案:

答案 0 :(得分:2)

找到解决方案。使用Cookie跟踪页面请求之间的活动对话ID。即使人员在指定的时间范围内注销然后再次使用,也会增加使用超时的好处。

感谢cdslnte触发思想......