前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >体验用yarp连接websocket

体验用yarp连接websocket

作者头像
饭勺oO
发布2023-10-18 19:45:09
发布2023-10-18 19:45:09
41300
代码可运行
举报
运行总次数:0
代码可运行

前段时间一看yarp的仓库,wow,终于发布1.0版本了。.net也升级到6版本了,之前一直只是用yarp做HTTP转发,今天刚好试试websocket

话不多说,直接开搞

配置集群

首先先配置集群信息,必填的有 名称 均衡负责策略 集群列表,集群Destinations可以配置多个。

配置路由

重点来了,配置路由转发,需要将HTTP请求升级到WebSocket链接。 这个配置就比正常的Transforms多一点点 除了要添加PathPattern匹配转发规则以外 还需要配置RequestHeader,将请求Upgrade成Websocket 如下图配置

来来开始测试

建个最简单SignalR服务

建个TestHub

代码语言:javascript
代码运行次数:0
运行
复制
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支持

代码语言:javascript
代码运行次数:0
运行
复制
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函数都不需要,牛皮。 直接就可以写代码

代码语言:javascript
代码运行次数:0
运行
复制
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~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置集群
  • 配置路由
  • 来来开始测试
    • 建个最简单SignalR服务
    • 建个简单的Console Signalr Client
  • 启动服务,开测
  • 搞定~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档