前段时间一看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

欢迎大佬们一起完善~~

最新文章

  1. DotNet 资源大全中文版【转】
  2. 16.10.17学到的Java知识
  3. SQL server 表中如何创建索引?
  4. 怎么用PHP发送HTTP请求(转载)
  5. ActiveMQ持久化消息(转)
  6. 查看光纤卡wwn号【转载】
  7. Oracle修改监听端口号1521[转]
  8. 在Windows上安装Elasticsearch v5.4.2
  9. winscp连接虚拟机Linux被拒绝的问题解决方案
  10. Mysql group by,order by,dinstict优化
  11. call、apply的作用和区别是什么?
  12. SQL Server - group by
  13. 配置rpm本地源及局域网环境下使用
  14. windowns下excel2013快速生成月报表
  15. Linux安装codis
  16. 【第七课】Nginx反向代理和负载均衡
  17. vsCode_1.27.2
  18. “Hello World!”Final发布文案加美工
  19. jquery-问题解答
  20. iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)

热门文章

  1. 每个男孩的机械梦「GitHub 热点速览 v.21.41」
  2. 2020 年国内 Serverless 用户规模:阿里云占比第一,达 66%
  3. 题解 CF1119H Tripe题解
  4. DRF的action装饰器
  5. AES解密尾部出现乱码问题
  6. 4.1 The Example Domain 领域示例代码
  7. jq问题
  8. java中this关键字总结
  9. [no code][scrum meeting] Beta 12
  10. 「总结」$dp1$