IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> jmeter测试websocket -> 正文阅读

[网络协议]jmeter测试websocket

websocket插件安装

jmeter想要测试websocket接口,但需要引入以下依赖包,把以下jar包放到jmeter安装目录的\lib\ext目录下:

  • jetty-http
  • jetty-io
  • jetty-util
  • websocket-api
  • websocket-client
  • websweocket-common

我用的是 下面版本的jar包?

1、JMeterWebSocketSamplers-1.2.2.jar

2、jetty-http-9.1.2.v20140210.jar
3、jetty-io-9.1.2.v20140210.jar
4、jetty-util-9.1.2.v20140210.jar
5、websocket-api-9.1.1.v20140108.jar
6、websocket-client-9.1.1.v20140108.jar
7、websocket-common-9.1.1.v20140108.jar

JMeterWebSocketSamplers.jar的所有版本下载地址

https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/

jar包安装后重启jmeter,取样器里面会新增以下内容,如下图所示

脚本编写

在编写脚本之前,先要搞清楚推送服务的逻辑,它的逻辑是这样的:

  • 首先,客户端向服务端发送请求,建立连接
  • 建立连接后,客户端需要定时向服务端发送ping-pong消息,维持心跳
  • 客户端发送主动断开连接的请求,服务端断开该连接

建立连接,使用【WebSocket request-response Sampler】,顾名思义,这个取样器既能发送请求也能接收响应。

说明一下各项内容:

  • Connection:有use existing connectionsetup new connection两种模式,前者是使用已有连接,即上一个websocket请求所建立的连接通道,选择后Server URL全置灰只读不可操作。后者指新建连接通道。
  • Server URL:ws协议和wss(加密的websocket)可选,sever name or IP(服务器地址)、Port(端口号)、Path(路径)、Connection timeout(连接超时时间)这些含义也很明了。
  • Data:发送数据,可以选择Text(文本,包括JSON)和Binary(二进制)形式,也可以通过勾选Read request data from file来从文件中获取data。

这个请求要与连接请求是同一个线程,并且要定时运行,因此设计脚本结构如下:

注意两点:

  1. 想要建立3000个连接的话,一定是将【线程数】设置为3000,循环次数设置为1,而不是相反,这是许多人容易弄混淆的。
  2. 【Ramp-up 时间】这个参数是全部线程启动的时间,如果想给服务器较大的瞬时压力,就把时间设置短一些。经过实测,这个时间太短的话,最终成功建立的连接会明显少于设置的【线程数】,所以一般设置长一点。

一般的websocket推送服务,会设计定时心跳检测机制,也就是客户端定时向服务端发送一条特定的消息,这样服务端就会保持这个连接,否则的话,这个客户端就被服务端判定为不活跃而被断掉连接。因此,为了让我们的脚本持续跑下去,就需要加入心跳检测请求。

因为线程循环次数是1次(多次的话,就是一个线程反复建立连接了),因此我们要把【心跳检测】放到一个循环控制器中。

而【固定定时器】的作用,就是控制【心跳检测】发送的频率:

心跳检测:

尤其要注意两点:

  1. Connection项一定要选择?use existing connection,表示使用该线程已经建立的连接,否则就重新创建连接了。
  2. Request data?根据服务端的实现而定。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:51:11  更:2021-07-13 17:52:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:57:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码