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

@microsoft/signalr部署后WebSocket无法正常连接问题咨询

SignalR 部署到服务器后无法连接故障排查点

1. 服务器端 WebSocket 功能未启用

  • IIS 环境:需要在「服务器管理器 > 角色和功能 > Web 服务器 > 应用程序开发」中勾选安装「WebSocket 协议」
  • Nginx/Apache 反向代理环境:需要额外配置 WebSocket 转发规则
  • 云 PaaS 环境(如 Azure App Service、云服务商托管服务等):需要在服务配置页手动开启 WebSocket 支持

2. 反向代理 WebSocket 转发配置错误

以 Nginx 为例,需要在对应站点的 location 配置块中添加以下规则,否则无法完成 WebSocket 握手:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600s; # 避免长连接被默认超时切断

3. 路由与权限配置不匹配

  • 检查 ASP.NET Core 服务端的 Hub 路由配置,是否和前端请求的路径完全匹配,示例:
    app.MapHub<SpreadsheetHub>("/staging/web-services/hubs/spreadsheethub");
    
  • 检查服务端 CORS 配置:如果前端和服务端跨域,需要显式允许前端域名,并且开启 AllowCredentials(),不能使用 AllowAnyOrigin()
  • 检查你配置的请求域名 demo 是否在服务器环境可以正常解析,SSL 证书是否合法有效,未过期、未被浏览器拦截

4. skipNegotiation 参数带来的限制

你配置了 skipNegotiation: true 会直接跳过 SignalR 的传输协商步骤,强制使用 WebSocket,这种场景下:

  • 不能使用没有开启粘性会话的负载均衡,否则 WebSocket 连接可能被转发到不同的服务实例导致握手失败
  • 服务端必须完全支持 WebSocket 协议,不兼容降级到其他传输方式

排查实操步骤

打开浏览器开发者工具的「网络」标签,筛选「WS」类型请求,查看 WebSocket 握手的状态码:

  • 404:路径配置错误,检查服务端 Hub 路由和前端请求地址
  • 403:CORS 或权限校验失败
  • 502/504:反向代理配置错误,或者服务未正常启动
  • SSL 相关错误:证书无效、域名不匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:39:03