用途:在 ASP.NET Core 应用中实现或审查 SignalR 相关功能,适用于聊天、通知、协作、实时更新等广播式或面向连接的实时场景,也用于排查集线器生命周期、连接状态与传输问题,并判断 SignalR 与其他传输方式的取舍。
主要能力:定义强类型 Hub 契约(如 Hub<IChatClient>),使用组、在线状态和连接元数据做定向消息推送;提供服务端配置,包括认证、消息大小、流缓冲、KeepAlive 与 ClientTimeout;通过 IHubContext<THub, TClient> 从 Hub 外部发送消息;支持 MessagePack 协议与 Redis 底板实现多服务器扩展;客户端提供 JavaScript 与 .NET 的自动重连示例。
使用方式:服务端用 AddSignalR 注册并用 MapHub 映射路径,示例为 app.MapHub<ChatHub>("/hubs/chat");WebSocket 连接可从查询字符串读取 access_token 完成 JWT 认证;多服务器场景用 AddStackExchangeRedis 配置底板。客户端用 withAutomaticReconnect 设置重试延迟,并在重连后重新加入组,因为重连不会恢复组成员关系。
适用场景与限制:适合广播式扇出与连接导向的实时消息;不建议把 gRPC 硬套到 Hub 风格扇出,大负载应走 REST/gRPC,SignalR 用于通知。限制与注意事项包括:Hub 实例按方法调用创建,不要在 Hub 属性中保存状态;不要直接实例化 Hub;必须 await 异步调用;参数变更需用自定义对象保持向后兼容;多服务器需底板或 Azure SignalR Service 并考虑粘性会话;需校验所有入站消息,即使已认证。Native AOT 或裁剪场景需显式验证支持的协议与序列化。参考文档包括 patterns.md 与 anti-patterns.md。部分具体价格、平台与部署细节暂未提供。