Jmeter本身是不支持压测websocket协议的,需要安装一个插件,教程:Mac使用jmeter压测websocket
安装好插件后会显示以下的组件:
WebSocket Open Connection | 打开连接,填写协议、ip、端口、请求路径 |
---|---|
WebSocket Ping/Pong | 通过ping/pong测试连接。默认即可 |
WebSocket request-response Sampler | 发送请求,接收响应 |
WebSocket Single Write Sampler | 填写请求 |
WebSocket Single Read Sampler | 读取响应 |
WebSocket close | 关闭连接 |
思路
测试websocket协议的并发,一个请求可能返回N条响应,但是最后一条响应的status是end
返回的响应都在「WebSocket Single Read Sampler」中,因此「WebSocket Single Read Sampler」要放到while循环控制器中,通过判断status==CONTINUE 就执行,否则跳出循环
步骤:
- 添加while循环控制器,条件写上:
${__javaScript("${status}"=="CONTINUE")}
- 把「WebSocket Single Read Sampler」放到循环控制器里
- 添加json提取器,提取字段:status ;Json表达式:$.status ;提取第1个即可
- 循环控制器上加一个“用户定义的变量”,字段是status 值是CONTINUE