c# - SignalR Core 中缺少 ConnectionSlow、Reconnecting 和 StateChanged 事件的解决方法?
问题描述
我正在将一个项目从 SignalR 升级到 SignalR Core,并遇到以下问题。我没有看到 .NET 客户端快速检测到它已与服务器断开连接的方法。当 Web 服务回收其应用程序池时,就会发生这种情况。.NET Core 客户端通过HubConnection.Closed
事件检测到这一点需要 90 秒。
在最初的 SignalR 中,这是通过许多事件(如HubConnection.ConnectionSlow
、HubConnection.Reconnecting
或)瞬间完成的HubConnection.StateChanged
。
我在最新的稳定 SignalR Core 版本 1.0.1 中没有看到任何这些事件。我尝试监视HubConnection.State
属性更改,但这似乎反映了HubConnection.Closed
事件,并且还需要 90 秒才能更新。
有哪些建议的解决方法可以更快地检测连接变化?我需要实现自己的保持活动消息系统吗?
解决方案
最后问题竟然是 app_pool 回收操作需要 90 秒才能关闭旧的 app_pool。这意味着 SignalR 连接在此期间真正处于活动状态,这就是客户端无法检测到断开连接的原因。一个快速的解决方法是将以下设置从默认的 90 秒更改为较低的超时(在我的情况下为 30 秒):
[application pool] > Right Click > Advanced Settings > Shutdown Time Limit (seconds) > 30
推荐阅读
- arcore - 我不能在 android 中使用带有后置摄像头的面部跟踪器
- python - 当我在 tkinter 中创建一个新窗口时,为什么我的所有小部件都没有显示?
- python - 如何在 Matplotlib 中栅格化彩条轴刺?
- python - 用空格分割字符串中的字符和数字
- python - `pip install -r requirements.txt` 时,某些安装对 requirements.txt 扩展包规范的问题
- r - 重新排序堆积条形图
- c - 错误:预期标识符或 '(' 在 ')' 标记之前
- php - 合并两个表查询
- docker - 为什么两个 docker 镜像具有相同的镜像 ID 和相同的标签,但摘要不同?
- python - TypeError: (): 不兼容的函数参数。支持以下参数类型: 1. (self: fasttext_pybind.args, arg0: float) -> None