OnDisconnect并在回收后登录用户?

时间:2013-07-07 07:37:36

标签: signalr

我有时会读到OnDisconnect服务器端),可以绕过(应用程序回收等)。

  

在某些情况下,不会调用OnDisconnected方法   当服务器关闭或App Domain被回收时。

所以我问:

当用户连接时,我会为他生成token,并将其保留在用户cookie中,并且在调用OnConnect时,我会附加connectionId该令牌

(与调用onDiconnect的方式相同,我在dateDisconnected设置了一个值

这也将支持2个已连接的用户(相同的浏览器)

示例:

enter image description here

示例:

id         tokenId              ConnectionID         DateCreated            dateDisconnected
----------------------------------------------------------------------------------------------
1          500                    {1234-1234}          06-07-2013               null             
2          500                    {5432-5432}          06-07-2013               null             

问题在于:

如果用户已登录会发生什么(所以我在登录时在我的数据库中写这个用户),做一些聊天,然后服务器重新启动?

客户端将尝试重新连接,30秒后它将停止。

,当服务器启动时(一小时后) - 我仍然在我的数据库中记录了用户。他。 (好吧,无论如何都没有那个连接ID ......)

我该如何解决这类问题?

1 个答案:

答案 0 :(得分:1)

解决此问题的最佳方法是在应用程序启动时将所有人都记录下来,在您的情况下,无效/删除所有已登录的令牌行。因此,无论何时服务器启动,应用程序都处于新状态,没有人登录。