ocelot转发signalr/socket
- startup文件中需要将websocket添加到管道
Configure(app =>
{
//注意位置尽量在ocelot之前
app.UseWebSockets();
app.UseOcelot().Wait();
})
- socket配置路由
{
"DownstreamPathTemplate": "/ws",
"UpstreamPathTemplate": "/",
"DownstreamScheme": "ws",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5001
}
],
}
- signalr配置路由
{
"Routes": [
{
"DownstreamPathTemplate": "/{catchAll}",
"DownstreamScheme": "ws",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 50000
}
],
"UpstreamPathTemplate": "/gateway/{catchAll}",
"UpstreamHttpMethod": [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ]
}
]
}
- 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动态路由问题
留待后查,同时方便他人
联系我:renhanlinbsl@163.com
联系我:renhanlinbsl@163.com