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

YARP对接.NET Core 5/6 SignalR时如何配置转发/chat路径WebSocket流量

YARP 转发 SignalR WebSocket 配置方案

基础配置(appsettings.json)

直接在YARP网关项目的配置文件中添加如下ReverseProxy节点即可:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ReverseProxy": {
    "Routes": {
      "chat-websocket-route": {
        "ClusterId": "signalr-api-cluster",
        "Match": {
          "Path": "/chat/{**catch-all}"
        },
        "Metadata": {
          "WebSocketProtocol": "true"
        }
      }
    },
    "Clusters": {
      "signalr-api-cluster": {
        "Destinations": {
          "signalr-api-instance": {
            "Address": "http://替换为你的API服务实际地址:端口/"
          }
        }
      }
    }
  },
  "AllowedHosts": "*"
}

配置说明:

  • 路由规则匹配所有/chat/开头的请求,覆盖SignalR协商、WebSocket升级、心跳包等全链路请求
  • WebSocketProtocol设为true后YARP会自动处理WebSocket协议升级逻辑,不需要手动改写请求头

网关项目代码配置(Program.cs)

必须按顺序注册WebSocket中间件和YARP服务,否则无法正常识别WebSocket请求:

var builder = WebApplication.CreateBuilder(args);

// 注册YARP反向代理服务
builder.Services.AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));

var app = builder.Build();

// 先启用WebSocket中间件,再启用YARP转发
app.UseWebSockets();

app.MapReverseProxy();

app.Run();

SignalR服务端配套配置

确保你的API服务中ChatHub的映射路径和转发规则匹配,示例如下:

// 部署SignalR的API服务Program.cs代码
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSignalR();

var app = builder.Build();

// 映射路径对应YARP转发的/chat前缀
app.MapHub<ChatHub>("/chat/hub");

app.Run();

前端连接时使用ws://<domain>/chat/hub即可被正常转发到后端SignalR服务。

多实例部署补充配置

如果你的SignalR服务部署了多个实例,需要在集群配置中开启会话粘滞,避免长连接断开:

"signalr-api-cluster": {
  "SessionAffinity": {
    "Enabled": "true",
    "Policy": "Cookie",
    "FailurePolicy": "Redistribute"
  },
  "Destinations": {
    "signalr-api-instance": {
      "Address": "http://替换为你的API服务实际地址:端口/"
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:06:03