(1) 去官方网站下载jmeter(版本为3.3)并解压。点击bin/jmeter.bat启动jmeterhtml
(2) 新建线程组。web
(3) 在线程组中新建WebSocket Sample安全
一、WebServer
(1)Server Name or IP:WebSocket发送的目标服务器的地址或者名称
(2)Port Number:WebSocker服务器监听的端口号。(通常是HTTP 80端口,能够经过WireShark数据包获得)
二、Timeout:
(1)Connection – 发送一个链接请求后,Jmeter等待链接完成的最长时间,单位是毫秒。
(2)Response - 对响应消息的最大等待时间。
三、WebSocket Request
(1)Implementation – 只支持RFC6455(v13) ,WebSocket协议标准的最新版。
(2)Protocol – 有ws与wss之分, ws前缀是WebSocket链接的辨别标识,wss前缀是WebSocket安全链接的辨别标识。根据本身的实际状况填写
(3)Streaming Connection – 选择这个TCP session要不要保持,若是勾上标识链接会一直存在,若是没有勾上,那么获得第一次响应后该连接就会被关闭。
(4)Request data:填入将要发送的请求,要跟开发沟通好,这个是什么格式的消息。
4.WebSocket Response
(1)Response Pattern – 采样器将等待含有该标识的消息并继续通讯(或者直到timeout,该链接关闭)
(2)Close Connection Pattern – 若是服务器返回的消息含有这样的字符,就结束会话。
(3)Message Backlog – 定义服务器返回消息保留的最大长度。
服务器
按照网上的例子,能够用http://www.websocket.org/echo.html这个网站作一些试验,网站会将收到的数据(你的request数据)在服务器响应中原样返回。
将网站提供的host等信息填入便可与网站通讯,下面是个人实验,用于理解Jmeter中websocket sampler
websocket
test plan设置以下:
不勾选streaming connection结果以下:
能够看出发送的Ground control to Major Tom被返回,这个实验是成功的,从result tree的sampler result中Execution FLow中能够看出测试的结果与上面咱们的设置之间的关系:用了5000毫秒的时间等待服务器的链接,用了20000毫秒的时间等待服务器的消息,且在接受到第一条消息后,关闭了这个websocket会话。
session
能够看到在结束测试的时候,勾上streaming那个小勾后,测试结束时streaming connection仍是开着的。
socket
只发送一条消息可能看不出什么区别,将Websocket sampler复制一下,发送两条信息。这样就能够看出第二条消息发送时是直接用的第一条消息打开的链接,服务器的响应被归类到一次会话的响应窗口。
oop
结果以下:
循环中的sampler都勾选了streaming,最后一个sampler没有勾选此选项,结果中能够看出:在loop controller中的sampler使用的是一个链接,在loop外面的这个sampler会打开一个新的链接,能够得出一个结论,实际上,当勾选了streaming connection时,不只会在结束会话后保留链接,并且勾选了的sampler会在有可用链接是直接使用,而没有勾选的sampler即便存在可用链接也会从新打开一个新的链接。所以,若是是要在一个会话中发送多条消息,请勾选这个streaming
connection。
测试
这就要用到以前提到过的response pattern和close pattern,先给出三个请求在没有设置response pattern和close pattern的运行结果以便于比较
而后在第一个sampler中设置response pattern和close pattern以下(因为只创建一次链接,因此只会读取第一个sampler中的pattern设置信息)
这样在第二个请求的响应返回不符合father这个标识,又符合了close pattern时,就会断开链接了,此时第三个websocket勾选了streaming使用上一个链接,但实际上却链接不上这个远程终端时就会报错了。(response响应在这种状况下不能设置为空,若是先检测到返回的内容符合response pattern,就不会再去判断是否符合close pattern了)
网站
上面的试验使用的都是默认的3,所以若是试验中的三个socket都是是在一个会话中通讯,点击第三个是能够看到最近的三个服务器响应的。当这个选项设置为1时,就只能看到最近的一条响应信息了