WebSocket协议
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要一次握手,浏览器和服务器就可以建立连接,两者之间互相发送数据。
彩蛋:https://www.runoob.com/html/html5-websocket.html
JMeter环境搭建
以Mac版本为例,需要先安装jdk8环境然后安装JMeter
下载地址:https://pan.baidu.com/s/1BuTsi-9n6jUj8YrWkBjZ0A 提取码: wc7m
安装完成,运行安装目录下bin-jmeter就能正常启动jmeter了
测试WebSocket接口需要安装相应的补丁插件
下载地址: https://pan.baidu.com/s/1CIlepRcOHcA-2jZUSdcqLg 提取码: 2it4
下载解压完成把文件放置到jmeter-bin-ext文件夹下面
启动WebSocket接口测试
以直播间多用户文字聊天刷屏为例
1、启动jmeter,文件-新建测试计划,命名为【文字聊天】
2、右击测试计划【文字聊天】,添加线程组
新建线程组
3、右击线程组-Sampler-WebSocket Open Connection,命名为【创建WebSocket连接】
创建WebSocket连接
设置WebSocket连接的协议(wss加密连接相当于https,需要在jmeter中安装证书,否则可能不支持)、IP、端口和路径
WebSocket连接设置
4、因为是模拟聊天消息发送,需要有用户登录信息,所以需要向服务器创建一个登录请求
右击线程组-Sampler-WebSocket request-response Sampler,命名为【向服务器发起登录请求】
向服务器发起请求
勾选use existing connection使用上面已经创建好的链接,设置好发送的请求参数
设置登录请求信息
5、读取服务器返回的登录请求,右击线程组-Sampler-WebSocket Single Read Sampler,命名为【读取服务器返回的登录请求】
创建服务器返回请求
读取登录请求信息
6、请求服务器登录返回成功之后,下一步开始模拟发送聊天消息和接收聊天消息,同理需要再次创建一个WebSocket request-response Sampler【向服务器发起聊天消息请求】和WebSocket Single Read Sampler【读取服务器返回的聊天消息请求】,如图所示
创建聊天请求
7、关闭WebSocket连接,右击线程组-Sampler-WebSocket Close,命名为【关闭WebSocket 连接】
8、查看运行结果,右击测试计划-添加-监听器-察看结果树
察看结果树
点击运行按钮,通过察看结果树可以看到返回结果,绿色表示通过,红色表示error
查看结果返回状态
以上流程仅实现相同用户发消息,要模拟不同用户发送聊天消息,需要进行用户变量设置
9、右击线程组-添加-配置元件-随机变量
设置用户变量
10、设置变量参数,变量名称、格式,取值范围等
设置变量参数
11、请求中利用正则表达式引用该变量,如图所示
引用变量
以上,就能实现多用户同时发送聊天消息的WebSocket接口测试啦,线程数和循环次数等可以在线程组中调节即可
注:修改Response(read)timeout(ms)时间,可以调节请求服务器和接收时间。
根据需求,要实现气泡刷屏效果是由老师端来操作开关,所以同上所示需要新建一个线程来创建一个老师登录请求,向教室内广播一条打开信令,此处就不公布具体信令了。
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
Synchronizing Timer 同步定时器
作用:用来设置集合点,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力
1、添加线程组-右键添加-定时器-同步定时器
字段意思:
Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量,若设置为0,等于设置为线程组中的线程数量;
Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数;如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直等待。如果设置了最大等待时间,超过Timeout inmilliseconds中设置的最大等待时间后还没达到设置的线程数,将不再等待释放已到达的线程。
————————————————
版权声明:本文为CSDN博主「玛卡巴卡AI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42048124/article/details/105856301
作者:吱吱菌啦啦
链接:https://www.jianshu.com/p/5d9ab3f9de7b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。