什么是websocket协议?
Websocket是基于tcp的一种全双通信协议,客户端与服务器之间通过websocket建立连接后,客户端和服务器之间会长时间保持连接状态(即长连接)。客户端可以向服务器发送数据,服务器也可以主动向客户端推送数据。与http协议不同的是http是tcp的单向通信协议,只有客户端向服务器发送请求后,服务器再根据请求信息回复响应数据。
Websocket的特点:
1、全双工通信:客户端和服务器之间建立连接后,客户端和服务器可同时发送和接收消息,减少延迟
2、持久连接(即长连接):即客户端和服务器建立连接成功后,可持续保持连接状态。而相对于短连接的http协议,每次请求需要在头部信息中加入cookie或session等信息来鉴权当前请求的合法性。
3、减少带宽消耗:由于减少了http头部的开销,websocket比http传统协议的带宽消耗更少,适合于轮询或长轮询的业务
Websocket适用场景:
Websocket适用于需要客户端与服务器长时间保持连接和通信的业务,且可以在建立连接后可以双向发送和接收消息,如在线游戏、实时聊天、股票市场数据推送等。
Jmeter websocket准备
Jmeter默认状态下是不支持websocket协议的,需要在https://jmeter-plugins.org/中下载jmeter扩展的管理插件。
操作如下:
1、下载plugins-manager.jar包,并放入到jmeter的lib/ext目录下
2、启动jmeter在Options-> Plugins Manager 中进入到jmeter扩展管理界面
界面显示如下
2、在jmeter plugins manager上选择Available plugins,然后搜索websocket的扩展
这里有两个扩展,这两个都可以实现websocket协议的接口测试。可根据需要进行安装即可。
第1个:Websocket Sampler by Maciej Zaleski 是将websocket的建立连接、数据发送和接收、关闭连接都融合在一个采样器中
第2个:Websocket Samplers by Peter Doornbosch 是将websocket通信过程拆分成建立连接、数据发送、数据接收、检查连接状态、关闭连接都拆分成单个采样器。更具有操作性,下面就以第2个进行说明。
安装成功后,在采样器中就可以看到可以使用websocket的选项
Websocket 采样器说明:
WebSocket Open Connection 建立连接,即客户端与服务器之间建立连接
WebSocket Ping/Pong 检查客户端与服务器之间是否保持连接状态,一般用来测客户端和服务器连接的稳定性。或者检测当前连接是否保持连接状态。
WebSocket Single Read Sampler 接收服务器端推送过来的信息
WebSocket Single Write Sampler 客户端向服务器发送数据
WebSocket Close 关闭连接
WebSocket request-response Sampler 可以用来向服务器发送数据并接收服务器推送过来的信息
Websocket实战:
1、首先建立websocket客户端与服务器的连接,跟http接口请求差不多,就是要设置请求协议、服务器地址、端口号、接口拼接地址。websocket协议分为:ws(类似于http)、wss(类似于https协议)。
1、向服务器端发送请求数据
1、接收服务器响应数据
4、检测服务器的连通性
5、关闭连接
运行结果:
建立连接时的请求数据
发送websocket请求的数据
服务器响应的信息:
因为当前这个业务服务器会响应多段数据,所以这里就设置循环多次获取数据,就能拿到所有的数据信息。如果服务器一次性响应所有信息,可以不用循环去接收数据。具体根据实际业务调整