- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将 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/
我是一名优秀的程序员,十分优秀!