You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SignalR客户端休眠场景下消息发送及connectionId有效性问询

SignalR 笔记本休眠场景相关行为说明

1. 合盖静置后服务端发消息的行为

  • 笔记本合盖进入睡眠/休眠状态后,本地网络会完全中断,SignalR客户端与服务端的底层传输链路(WebSocket/Server-Sent Events/长轮询)会直接断开
  • SignalR服务端默认配置有30秒的断开超时阈值,如果超过该时间未收到客户端的心跳包或任何请求,服务端会主动清理该ConnectionId对应的连接会话资源,标记连接为已断开状态
  • 此时服务端向该ConnectionId发送的消息会直接被丢弃,客户端在休眠期间完全无法收到消息

2. 调用SendMessage方法是否抛出异常

默认配置下调用Clients.Client(connectionId).SendAsync("SendMessage", 参数)不会抛出异常:

  • SignalR内部会自动校验目标ConnectionId是否存在活跃连接,若连接已销毁,会直接静默忽略该消息,不会向上层业务代码抛出异常
  • 只有当你自定义配置了消息送达确认、或者使用了第三方扩展组件要求消息必须送达时,才可能触发异常逻辑

3. 重新开盖后原有ConnectionId的有效性

原有ConnectionId完全无效,且重连后会生成全新的ConnectionId:

  • 重新开盖网络恢复后,SignalR客户端(默认开启自动重连的前提下)会主动发起重连请求,服务端会为新的连接会话分配完全不同的新ConnectionId
  • 旧的ConnectionId对应的会话已经在超时后被服务端销毁,无法再复用,也无法通过旧Id向重连后的客户端发送消息

小提示:不要将ConnectionId作为用户的长期唯一标识,建议自己维护用户Id与当前活跃ConnectionId的映射关系,重连成功后更新映射即可实现跨重连的消息投递。

内容的提问来源于stack exchange,提问作者Ian McInnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:45:03