wsbench 使用与技术文档
1. 安装指南
wsbench
是一款用于测试 WebSocket 服务器性能的脚本工具。在使用前,您需要安装 NodeJS。安装完成后,您可以开始使用 wsbench
。请注意,该工具没有其他外部依赖。
2. 项目使用说明
wsbench
可以通过指定 WebSocket URL 来启动对服务器的基准测试。
基本用法
最简单的用法是直接调用 wsbench
并传入指向服务器的 WebSocket URL。例如,以下命令将顺序地向运行在本地主机的 8080 端口的 WebSocket 服务器打开并关闭 100 个连接。在此过程中不会发送任何消息。
wsbench ws://localhost:8080
您还可以使用 -r
选项以并行、速率驱动的方式进行测试。例如,以下命令将每秒打开并关闭 10 个连接,并且无限运行。使用 -c NNN
选项可以指定在打开 NNN
个连接后终止,其中 0 表示无限制。
wsbench -r 10 ws://localhost:8080
使用 -m NNN
选项可以指定每个连接发送的消息数。使用 -s NNN
选项可以设置每条消息的字节数。在这种模式下,WebSocket 连接将保持打开状态,直到所有消息发送完毕。
会话脚本
wsbench
工具支持使用 -S FILE
选项执行任意的 JavaScript 代码来控制打开连接的交互(例如发送和接收消息)。这允许测试丰富的、特定于应用程序的行为。以下是一个简单的示例,该文件将为前 10 个连接发送 Hello
消息,为后续每个连接发送 world!
消息,然后关闭连接。请注意,会话函数对每个打开的 WebSocket 调用一次,因此我们将计数器保持在模块作用域内。
var cnt = 0;
module.exports = function(ws) {
ws.onopen = function() {
ws.send((++cnt <= 10) ? 'Hello' : 'world!');
ws.close();
};
};
在 examples/echo/
目录中可以找到更复杂的示例。
会话逻辑可以使用系统中安装的任何 NodeJS 模块。特别是,这提供了对内置 HTTP 堆栈的访问;构建包含 WebSocket 和 HTTP 请求的异构工作负载变得非常简单。
3. 项目API使用文档
wsbench
的完整用法如下:
wsbench [options] <url>
在给定 ws:// URL 上启动基准测试。
我们可以以两种方式执行工作负载:顺序执行,每次打开一个连接并在下一个连接开始之前关闭它;并行执行,指定一个速率并独立于其他连接的状态打开连接以满足该速率。默认为顺序执行,并行执行可以通过 -r <rate>
选项指定。并行执行受要建立的连接总数的限制,通过 -c
选项指定。
可用选项:
-c, --num-conns NUMBER
:要打开的连接数(默认:100)-h, --help
:显示帮助信息-m, --num-msgs NUMBER
:每个连接的消息数(默认:0)-p, --protocol PROTO
:设置要使用的 WebSocket 协议(默认:空)-r, --rate NUMBER
:每秒连接数(默认:0)-s, --msg-size NUMBER
:发送的消息大小,以字节为单位(默认:32)-S, --session FILE
:用于会话逻辑的文件(默认:无)
4. 项目安装方式
请遵循以下步骤安装 wsbench
:
-
确保您的系统中已安装 NodeJS。
-
使用
git
克隆仓库:git clone https://github.com/pgriess/wsbench.git
-
切换到仓库目录并运行
npm install
:cd wsbench npm install
-
运行
wsbench
并按照上述使用说明进行测试。
以上是 wsbench
的安装和使用说明。希望这篇文档能帮助您更好地了解和使用该工具。
- 鸿蒙开发工具大赶集本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。07
- LangChatLangChat: Java LLMs/AI Project, Supports Multi AI Providers( Gitee AI/ 智谱清言 / 阿里通义 / 百度千帆 / DeepSeek / 抖音豆包 / 零一万物 / 讯飞星火 / OpenAI / Gemini / Ollama / Azure / Claude 等大模型), Java生态下AI大模型产品解决方案,快速构建企业级AI知识库、AI机器人应用Java03
- 每日精选项目🔥🔥 01.24日推荐项目:微软21节课程,入门生成式AI🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~027
- source-vue🔥 一直想做一款追求极致用户体验的快速开发平台,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间对若依框架进行扩展写了一套快速开发系统。如此有了开源字节快速开发平台。该平台基于 Spring Boot + MyBatis + Vue & Element ,包含微信小程序 & Uniapp, Web 报表、可视化大屏、三方登录、支付、短信、邮件、OSS...Java02
- Cangjie-Examples本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie047
- 毕方Talon工具本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python039
- PDFMathTranslatePDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython06
- mybatis-plusmybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava03
- 国产编程语言蓝皮书《国产编程语言蓝皮书》-编委会工作区018
- advanced-javaAdvanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。JavaScript0109