我有一个通过websocket连接到服务器的应用程序。服务器和应用程序都监视连接的状态,当连接丢失时应用程序可以重新连接。客户端使用ws v7.3.1。
由于某种类型的网络故障,服务器-客户端对中的一个开始表现出与预期不同的行为(旧连接在服务器上没有终止并创建了一个新连接,或者两个连接开始在客户端上同时存在)。
我需要一个程序或 npm 包(或 https-proxy-agent、socks-proxy-agent 的一些插件),通过它我可以传递应用程序流量,并且会产生不同类型的网络故障(理想情况下 - 通过一系列快速重新连接和直至更改外部 IP 地址)。或者您需要解释应用什么方法来自己启动网络故障和错误。
网络 (tc)
试试netem包。项目页面上有使用示例。有一个 deb 包。
该程序可以:
彭巴
Docker 容器工具。GitHub 上的回购。
破坏者
项目页面。有一个 CLI 管理选项,您也可以通过 HTTP 进行管理:
用python写的。能力:
虚拟网(ipfw)
带有使用示例的主页。从各种收集。
该程序在不同模式下限制网络速度。其他功能也与以前的程序类似。
猴子大军
四面军由三只“混沌猴”组成,它们破坏了工作系统的一部分。由 Netflix 开发。它也可能有用,但似乎对 AWS 进行了改进。
macos的解决方案:
Network Link Conditioner 工具可以在“Additional Tools for Xcode”包中找到。您可以从Apple Developer 下载页面下载它。
启用网络链路调节器会根据所选配置更改系统范围内的网络环境,限制上行链路或下载带宽、延迟和丢包率。
您可以从以下预设中进行选择:
… 或者根据您的要求创建自己的。
@Gaff的答案和Network Link Conditioner文章的免费翻译
我在一个单独的答案中发布了如何测试 Web 套接字以进行脚本故障转移。为此有一个炮兵 npm 包。包页面有其功能的描述。
这是特别有趣的:
我将如何使用它:
artillery run ...
,同时通过我的第一个答案中的一个程序出现网络故障,例如netem
。还有一分钟可以根据这篇文章中的这个例子编写一个测试脚本