体验用yarp连接websocket
2024-10-19 14:34:40
前段时间一看yarp的仓库,wow,终于发布1.0版本了。.net也升级到6版本了,之前一直只是用yarp做HTTP转发,今天刚好试试websocket
话不多说,直接开搞
配置集群
首先先配置集群信息,必填的有
名称
均衡负责策略
集群列表,集群Destinations可以配置多个。
配置路由
重点来了,配置路由转发,需要将HTTP请求升级到WebSocket链接。
这个配置就比正常的Transforms多一点点
除了要添加PathPattern匹配转发规则以外
还需要配置RequestHeader,将请求Upgrade成Websocket
如下图配置
来来开始测试
建个最简单SignalR服务
建个TestHub
using Microsoft.AspNetCore.SignalR;
namespace TestSinganlR
{
public class TestHub : Hub
{
public override Task OnConnectedAsync()
{
Console.WriteLine("````````````````````````````````");
Console.WriteLine("``````````OnConnected```````````");
Console.WriteLine("````````````````````````````````");
return base.OnConnectedAsync();
}
public override Task OnDisconnectedAsync(Exception? exception)
{
Console.WriteLine("````````````````````````````````");
Console.WriteLine("``````````OnDisconnected```````````");
Console.WriteLine("````````````````````````````````");
return base.OnDisconnectedAsync(exception);
}
}
}
顺便提一下.net6新建的web模板真简洁,startup.cs文件都不需要了
配置host,主要添加signalr和websocket支持
using Microsoft.AspNetCore.WebSockets;
using TestSinganlR;
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureServices(services => {
services.AddSignalR();
services.AddWebSockets(options => {
});
}
);
// Add services to the container.
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseWebSockets();
app.MapRazorPages();
app.MapHub<TestHub>("testhub");
app.Run();
建个简单的Console Signalr Client
.net6里面连console模板的main函数都不需要,牛皮。
直接就可以写代码
using Microsoft.AspNetCore.SignalR.Client;
var connection = new HubConnectionBuilder()
.WithUrl("http://127.0.0.1:5000/hub/testhub", options => {
options.Transports = Microsoft.AspNetCore.Http.Connections.HttpTransportType.WebSockets;
options.SkipNegotiation = true;
})
.WithAutomaticReconnect()
.Build();
await connection.StartAsync();
Thread.Sleep(int.MaxValue);
启动服务,开测
yarp
signalR
启动console
这时候signalr的控制台输出OnConnected了,说明正确连上了~~
关闭console
这时候signalr的控制台输出OnDisconnected了,说明连接断开了~~
再来看看yarp控制台输出
搞定~
再顺便推推自己封装yarp的一个EFCore储存库和配置界面
上面配置的图片就是yarp的配置界面,配置信息保存在数据库支持热更新
简单无脑上手hhhhh~
仓库地址是这个ReverseProxy.Store
欢迎大佬们一起完善~~
最新文章
- DotNet 资源大全中文版【转】
- 16.10.17学到的Java知识
- SQL server 表中如何创建索引?
- 怎么用PHP发送HTTP请求(转载)
- ActiveMQ持久化消息(转)
- 查看光纤卡wwn号【转载】
- Oracle修改监听端口号1521[转]
- 在Windows上安装Elasticsearch v5.4.2
- winscp连接虚拟机Linux被拒绝的问题解决方案
- Mysql group by,order by,dinstict优化
- call、apply的作用和区别是什么?
- SQL Server - group by
- 配置rpm本地源及局域网环境下使用
- windowns下excel2013快速生成月报表
- Linux安装codis
- 【第七课】Nginx反向代理和负载均衡
- vsCode_1.27.2
- “Hello World!”Final发布文案加美工
- jquery-问题解答
- iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)