记录Ocelot + SignalR 多服务端测试

前言

分两个项目,一个Gatway,一个SignalR

贴代码

1、Gatway

1、引用Ocelot

2、添加一点点代码

Startup.cs

3、简单配置ocelot

ocelot.json

{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "/{catchAll}", //下游路径
      "DownstreamScheme": "ws", //https  //下游协议
      "DownstreamHostAndPorts": [ // 下游主机及端口
        {
          "Host": "127.0.0.1",  // 这里是我后面signalr地址
          "Port": 53353
        },
        {
          "Host": "127.0.0.1",
          "Port": 53354
        },
        {
          "Host": "127.0.0.1",
          "Port": 53355
        }
      ],
      "UpstreamPathTemplate": "/gateway/{catchAll}", // 上游路径
      "UpstreamHttpMethod": [ "GET", "POST", "PUT", "DELETE", "OPTIONS" ], //上游使用的http方法
      "LoadBalancerOptions": {
        "Type": "RoundRobin" //雨露均沾
        //LeastConnection 任务少的接客
        //NoLoadBalance 天将降大任于斯人也
      }
    }
  ],
  "GlobalConfiguration": {  //全局配置
    "BaseUrl": "http://127.0.0.1:5000"
  }
}

2、signalr

1、Startup.cs

2、chat.js

//const connection = new signalR.HubConnectionBuilder()
//    .withUrl("http://127.0.0.1:5000/gateway/chatHub")  // 这里使用http
//    .configureLogging(signalR.LogLevel.Information)
//    .build();

const connection = new signalR.HubConnectionBuilder()
    .withUrl("ws://127.0.0.1:5000/gateway/chatHub", {   // 这里使用WebSockets,不这样写连不上的
        skipNegotiation: true,
        transport: signalR.HttpTransportType.WebSockets
    })
    .configureLogging(signalR.LogLevel.Trace)
    .build();

connection.on("ReceiveMessage", (user, message) => {
    const encodedMsg = user + " says " + message;
    const li = document.createElement("li");
    li.textContent = encodedMsg;
    document.getElementById("messagesList").appendChild(li);
});

document.getElementById("sendButton").addEventListener("click", event => {
    const user = document.getElementById("userInput").value;
    const message = document.getElementById("messageInput").value;
    connection.invoke("SendMessage", user, message).catch(err => console.error(err.toString()));
    event.preventDefault();
});

connection.start().catch(err => console.error(err.toString()));

3、Program.cs

测试

1、启动三个Signalr

2、启动Gateway项目

3、启动客户端

新开三个客户端,发现分配到了三个地址。

也就是意味着这三个连这不同的服务端,发信息应该是不通的。这里我们测试一下。

那再开两个客户端试试

不小心发了个54的消息,我们看下之前的54有没有消息。

确实有。

4、测试结束

好了,测试完了。也没看Ocelot源码。

结论就是Ocelot这样连SignalR都是各玩个的。这样不能一起愉快的玩耍的。

所以使用其他的方式实现一下。

原文地址:https://www.cnblogs.com/hanfan/p/10784971.html

时间: 2024-10-10 20:49:41

记录Ocelot + SignalR 多服务端测试的相关文章

使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)

原文:使用SignalR从服务端主动推送警报日志到各种终端(桌面.移动.网页) 微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 使用SignalR从服务端主动推送警报日志到各种终端(桌面.移动.网页) 阅读导航 本文背景 代码实现 本文参考 1.本文背景 工作上有个业务,.Net Core WebAPI作为服务端,需要将运行过程中产生的日志分类,并实时推送到各种终端进行报警,终端有桌面(WPF).移动(Xamarin.Forms).网站(

基于SignalR的服务端和客户端通讯处理

SignalR是一个.NET Core/.NET Framework的实时通讯的框架,一般应用在ASP.NET上,当然也可以应用在Winform上实现服务端和客户端的消息通讯,本篇随笔主要基于SignalR的构建一个基于Winform的服务端和客户端的通讯处理案例,介绍其中的处理过程. 1.SignalR基础知识 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Server Sent Events 和 Long

利用控制台承载SignalR作为服务端、及第三方推送信息

一 首先建立一个控制台需要引用一些组件 特别要注意引用Microsoft.Owin.Host.HttpListener别忘了这个组件,不引用他可能程序正常运行不会报错,但服务器一直开启失败(我之前就是掉过这个坑了) 二.建立一个控制台程序且建立集线器类MsgHub继承Microsoft.AspNet.SignalR.Hub 三.初始化服务端 四.调用InitSinalR方法即可启用成功服务端 到此完成服务端程序,客户端只需要请求上面地址即可运行 五.写到这只是完成了客户和服务消息传递,怎么将第三

Asp.net SignalR 实现服务端消息推送到Web端

原文:http://www.cnblogs.com/wintersun/p/4148223.html 之前的文章介绍过Asp.net SignalR,  ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.  今天我们来实现服务端消息推送到Web端,   首先回顾一下它抽象层次图是这样的: 实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加简单. 为了获取更好的可伸缩性, 我们引入消息队列, 看如下

IBM规则引擎(ODM)入门系列二(2):规则项目打包、发布及服务端测试

上一篇博文介绍了如何搭建安装res服务,这次一起来看看如何在Rule Designer中创建RuleApp并将其发布到Res服务上. 打开Rule Designer,查看一下我们的规则项目: 以PersonRule规则项目为例,如上图中,在“规则项目图”视图中,点击“创建RuleApp项目”: 输入项目名“PersonRuleApp”,点击下一步: 因为点击的是PersonRule规则集项目的“创建RuleApp”导航链接,所以这里选择规则集项目默认为“PersonRule”,点击完成. 此时在

服务端测试环境hosts配置检查脚本

问题 由于A测试环境和B测试环境相互耦合,B测试环境切换导致我方测试环境需要更改后台服务器的响应配置.若多台服务器中有一台服务器没有更改配置,则在测试过程中将会出现问题.届时排查由于环境配置不统一引起的环境问题将会费时费力. 思考 测试环境之间的关联配置就是hosts的配置,我们只需要知道A测试环境中各个服务器上的hosts文件中配置的B环境的hosts是否一致即可得出结论. 解决方案 在A测试环境服务器端各个机器的根目录下均安放hosts检查脚本hosts_check.py,内容如下: #!/

SpringMvc测试框架详解----服务端测试

随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用spring-test-mvc项目(合并到spring3.2中了). Spring MVC测试框架提供了对服务器端和客户端(基于RestTemplate的客户端)提供了支持. 对于服务器端:在Spring 3.2之前,我们测试时一般都是直接new控制器,注入依赖,然后判断返回值.但是我们无法连同Spri

SignalR入门之多平台SignalR服务端

之前创建SignalR服务端是基于Web应用程序而言的.那么能不能把SignalR服务端做成控制台应用程序.Winform或windows服务呢? 答案是肯定的. 之前尽管看起来好像是IIS和ASP.Net构成托管SignalR服务的唯一环境,但事实上并非如此,很多情况下采用的并非是IIS和ASP.NET. 现在,在这里以控制台程序为例,将SignalR服务端建立在控制台程序里. 如何在控制台程序实现基于Hub或持久性连接的SignalR服务呢,首先安装下面的包: install-package

服务端测试之接口测试初探

提起服务端测试,第一反应想到的可能就是http协议.socket连接.post/get发送请求等等.回想起小编当时初次接触服务端测试,真可谓一脸懵逼,不知道要干什么也不知道从哪儿开始做.服务端测试往往呈现给大家的是一个很大很宽泛的任务,我们知道要做服务端测试但却不知道怎么做,流程是啥,用什么工具去做,要达到什么样的效果.今天小编就结合最近自己做的一些服务端测试的任务,和大家聊聊服务端测试中的一个常见方法--接口测试. 一.什么是接口测试 先来看看接口测试的定义: 接口测试是测试系统组件间接口的一