gpt4 book ai didi

c# - SignalR 客户端断开连接并不总是触发

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:56 26 4
gpt4 key购买 nike

我正在尝试将 SignalR 版本 1.2.1 与 Mono 2.10(在我现有的项目中)一起使用。基本上效果很好。但是当来到 Connection 和 Disconnection 时,计数永远不会匹配。我正在尝试跟踪连接的客户端并相应地更新客户端。这是我的用例,

我在三个框架中加载了三个不同的页面。顶部(用于实时更新),左树(用于页面导航)和右页(实际内容页面)。首页将永远保留,并将不断更新实时值(我需要在此处连接到集线器)。同样,在其中一个内容页面(比如页面 A)中,我需要连接到 SignalR 并且 SignalR 应该不断更新一些实时信息,直到我在这个页面 A 中连接。我正在考虑在hub 当用户导航到此页面并继续将数据推送到连接的客户端时。一旦用户导航出页面 A(或关闭浏览器),我应该停止计时器。也有可能在页面 A 连接了多个用户,因此我应该确保在停止计时器之前页面 A 当前没有客户端。

为了对此进行测试,我只使用了一个静态变量来在用户连接到页面 A 或从页面 A 断开连接时递增和递减计数器。我在集线器的 OnConnected 和 Ondisconnected 事件中执行此操作。问题是,我总是收到 OnConnected 事件。但我并没有一直收到 OnDisconnected 事件。我已经尝试过各种场景,比如导航到我网站中的其他页面、再次重新加载同一页面 A、关闭选项卡/窗口等,但我在页面导航中大部分时间都遇到问题。它并不总是调用断开连接,我的计数器再也不会降为零。我尝试设置超时,但这似乎也没有调用断开连接。

谁能帮我解决这个问题?如何检测客户端断开连接并停止计时器?提前致谢。

PS:由于 .NET Framework 4.0 的要求,我必须坚持使用 Signal 1.2.1。即,我无法更新到 4.5。

最佳答案

我认为您应该在服务器上添加持久数据存储,并让服务器管理客户端超时,因为客户端没有触发 OnDisconnected 事件。

尝试以下示例:

https://github.com/DamianEdwards/NDCLondon2013/tree/master/UserPresence

并查看此线程 SignalR OnDisconnected - a reliable way to handle "User is Online" for chatroom?

关于c# - SignalR 客户端断开连接并不总是触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24247528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com