ocelot转发signalr/socket

  1. startup文件中需要将websocket添加到管道
 Configure(app =>
{
    //注意位置尽量在ocelot之前
    app.UseWebSockets();
    app.UseOcelot().Wait();
})
  1. socket配置路由
{
     "DownstreamPathTemplate": "/ws",
     "UpstreamPathTemplate": "/",
     "DownstreamScheme": "ws",
     "DownstreamHostAndPorts": [
         {
             "Host": "localhost",
             "Port": 5001
         }
     ],
 }
  1. signalr配置路由
  {
 "Routes": [
   {
     "DownstreamPathTemplate": "/{catchAll}",
     "DownstreamScheme": "ws",
     "DownstreamHostAndPorts": [
       {
         "Host": "localhost",
         "Port": 50000
       }
     ],
     "UpstreamPathTemplate": "/gateway/{catchAll}",
     "UpstreamHttpMethod": [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ]
   }
]
}
  1. web端调用时候需要调整
const connection = new signalR.HubConnectionBuilder()
    .withUrl("ws://127.0.0.1:6005/gateway/chatHub", {   // 这里使用WebSockets,不这样写连不上
        skipNegotiation: true,
        transport: signalR.HttpTransportType.WebSockets
    })
    .configureLogging(signalR.LogLevel.Information)
    .build();

[参考]
官网websockets
ocelot动态路由问题

posted @ 2022-09-08 11:59  Hey,Coder!  阅读(515)  评论(0编辑  收藏  举报