当前位置:网站首页>使用JMeter测试基于WebSocket协议的服务
使用JMeter测试基于WebSocket协议的服务
2022-07-17 00:14:00 【失眠的书】
使用JMeter测试基于WebSocket协议的服务
一、WebSocket是什么?
示例:WebSocket是一种双向网络通信协议,与HTTP不同,它以ws://或wss://开头。它是一个有状态协议,这意味着客户端和服务器之间的连接将保持活动状态,直到被客户端或服务器中的任何一方关闭连接之后,连接将从两端终止。
二、为什么需要WebSocket
初次接触 WebSocket的人,都会问同样的问题:我们已经有了HTTP协议,为什么还需要另一个协议?它能带来什么好处?
答案很简单,因为HTTP协议有一个缺陷:通信只能由客户端发起。
举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP协议做不到服务器主动向客户端推送信息。
这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询",每隔一段时候,就发出一个询问,了解服务器有没有新的信息。轮询的效率低,非常浪费资源。因此,工程师们一直在思考,有没有更好的方法,WebSocket就是这样发明的。
WebSocket的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
三、WebSocket Sampler的简单使用
1.安装WebSocket插件和依赖包
方法1:
打开JMeter插件管理器后,点击Available Plugins选项页,在搜索框中输入WebSocket,然后选择安装WebSocket Sampler by Maciej Zaleski插件

方法2:复制下载的jar包至jmeter的/lib/ext目录下,并重启jmeter
JMeterWebSocketSamplers-1.2.8.jar
jmeter-websocket-samplers-source
2.添加取样器
WebSocket Sampler组件添加方式:选中“线程组”右键 —> 添加 —> 取样器 —> WebSocket Sampler
根据场景需要添加取样器,可添加的websocket取样器有七种:
1)WebSocket Close —— 关闭ws连接
2)WebSocket Open Connection —— 打开ws连接
3)WebSocket Ping/Pong —— ping/pong心跳机制,检测连接是否还存在
4)WebSocket Sampler
5)WebSocket Single Read Sampler —— 只接收响应(消息推送)
6)WebSocket Single Write Sampler —— 只发送请求
7)WebSocket request-response Sampler —— 发送请求及接收响应
界面如下图所示:
3.WebSocket Sampler 取样器界面详解

针对界面中各选项说明:
名称:WebSocket Sampler组件的自定义名称,见名知意最好。
注释:即添加一些备注信息,对该WebSocket Sampler组件的简短说明,以便后期回顾时查看。
(1)WebServer
Server Name or IP:发送请求的目标服务器的IP地址或者域名。
Port Number:服务器地址后的端口号,有则填写,没有不用填写。
(2)Timeout (milliseconds)
Connection:链接建立的最大超时时间,单位毫秒。如果达到超时时间设置后链接未建立,则sampler失败。
Response :对响应消息的最大等待时间,单位毫秒。到达设定时间后WebSocket链接关闭。
(3)WebSocket Request
Implementation:只支持RFC6455(v13) ,WebSocket协议标准的最新版。
Protocol:有ws与wss之分。ws前缀是WebSocket连接的辨别标识,wss前缀是WebSocket安全连接的辨别标识。根据自己需要访问接口的实际情况填写。
Content encoding:内容编码。有中文推荐编写UTF-8。
Connection Id:连接ID。
Path:访问接口的路径。
Ignore SSL certificate errors:忽略SSL证书错误。
Streaming connection:选择TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么第一次响应后该链接就会被关闭。
(4)同请求一起发送参数
可以填写key-value形式的参数。(发送了好像不太好使,请求参数还是填写在下面的Request data中吧)
Request data:填入同请求一起发送参数,与HTTP采样器类似,结合被测接口说明文档来进行配置。
(5)Web Socket Response:接口响应相关设置
Response pattern:采样器将等待含有该标识的消息并继续通信(或者直到timeout,该连接关闭)
Close connection pattern:如果服务器返回的消息含有填写的字符,就结束会话。
Proxy Server (currently not supported by Jetty):编辑代理服务器信息代(当前不支持Jetty)
Server Name or IP:服务器IP地址或域名。
Port Number:端口号。
Username:用户名。
Password:密码。
Message Backlog:定义服务器返回消息保留的最大长度。
4.WebSocket Sampler 接口示例
(1)编辑取样器中信息
(2)添加 —> 监听器 —> 察看结果树
(3)运行查看结果
四、设置取样器顺序方式
设置取样器的先后执行顺序,一般为:
1)使用WebSocket Open Connection,建立ws连接;
2)使用WebSocket Single Write Sampler,请求订阅相关数据;
3)使用WebSocket Single Read Sampler,接收消息推送;
4)使用WebSocket Ping/Pong,确定长连接;
5)使用WebSocket Close,关闭ws连接。注:WebSocket request-response Sampler 兼具请求与响应功能,可视需求选择。
1.WebSocket Open Connection
设置ws的相关连接信息:
2.WebSocket Single Write Sampler
使用现有连接,发送订阅请求:
3.WebSocket Single Read Sampler
使用现有连接,接收消息推送:
4.WebSocket Ping/Pong
心跳检测:
5.WebSocket Close
关闭ws连接:
6.运行,查看结果树

总结
以上,就我这次我跟大家分享的全部内容了,如果大家觉得不错,请留个赞吧!当然也很期待你的打赏哦
如果大家有什么想法,欢迎跟我联系~
边栏推荐
- 图像质量评估指标:SNR、PSNR、MSE和SSIM
- Installing MySQL and JDBC on Windows
- bugku题解
- Configure map reduce workflow in oozie
- [unity development tips] unity packs the EXE on the PC side and compresses and packs it into an EXE file
- Engineering compilation: makefile and cmake (I)
- Leetcode 70:Climbing Stairs
- Hue oozie editor scheduling shell
- Line process of pool components
- ENVI:(2022年最详细的教程)自定义坐标系
猜你喜欢

第2章-系统控制原理 -> 经典控制理论

ENVI_IDL:批量处理Modis Swath数据的重投影并输出为Geotiff格式+详细解析

Vmware Tools最新安装教程(RHEL8)

Gdb+vscode for debugging 1 -- compile and debug using cmakelist files + attach process debugging

Unity3D 游戏人物跳跃落地时发生弹跳,偏移情况的解决方法

散列表、布隆过滤器、分布式一致性hash

Unity导入fbx模型后,运行时物体的旋转和位置自动改变的问题解决方法

Gdb+vscode for debugging 2 - GDB breakpoint related

3D NFT的破茧重生:Caduceus去中心化边缘渲染技术

DoubleDQN的理论基础及其代码实现【Pytorch + Pendulum-v0】
随机推荐
gdb+vscode进行调试1——使用CMakelist文件进行编译和调试+附加进程调试
BUAAOS-Lab0实验报告
Summary of tree and heap knowledge points
Build hue environment
LeetCode:动态规划中的0-1背包问题【快来直接套模板啦】
Envi IDL: lire la teneur en colonne de NO2 de tous les produits OMI et calculer la moyenne mensuelle, la moyenne trimestrielle, la moyenne annuelle + résolution
gdb+vscode进行调试3——vscode以及gdb远程调试
【Unity编辑器扩展】查找场景和资源内挂载某脚本的所有对象
成信大ENVI_IDL第二周实验内容:提取所有MODIS气溶胶产品中AOD+详细解析
Leetcode 70:Climbing Stairs
Engineering compilation: makefile and cmake (I)
STL--list容器(链表)
【Antv G2】折线图如何添加点击事件(点击任意位置即可获取折线上点的值)
【工具篇】Unity2D人物控制器,控制2D玩家移动跳跃,四方向和水平方向
LeetCode:动态规划【基础题目求解】
ENVI_IDL:批量拼接Modis Swath的逐日数据并输出为Geotiff格式
元宇宙公链Caduceus项目详解(一):Caduceus Metaverse Protocol的项目理念及技术框架
笔记一之IDL基础内容:常用数据类型_创建数组_类型转换_print输出_基本运算_关系运算
SSTI模板注入
STL -- set container