转自:http://blog.csdn.net/typing_yes_no/article/details/49512167

参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan.cn/cFzwiyeQDKdh3 (提取码:9bcf))

一、添加Jmeter对WebSocket协议的支持插件

1、到https://github.com/maciejzaleski/JMeter-WebSocketSampler下载Jmeter的WebSocket协议的支持插件:JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar,并直接将这个jar包放到Jmeter软件的\lib\ext\目录下。
2、另外,查阅https://github.com/maciejzaleski/JMeter-WebSocketSampler/wiki/Dependencies看到,这个插件需要以下几个jar包的支持:
1、jetty-http-9.1.2.v20140210.jar
2、jetty-io-9.1.2.v20140210.jar
3、jetty-util-9.1.2.v20140210.jar
4、websocket-api-9.1.1.v20140108.jar
5、websocket-client-9.1.1.v20140108.jar
6、websocket-common-9.1.1.v20140108.jar
这些插件可在http://download.csdn.net/detail/saryli/9708892 网站下载。直接放到Jmeter目录的\lib\ext\目录下即可。
3、以上jar包都准备好并放到Jmeter目录的\lib\ext\目录下后,重启Jmeter之后可以在sampler中看到websocket sampler这一项。
 
 

二、WebSocket Sampler简介

 
1、WebServer
(1)Server Name or IP:WebSocket发送的目标服务器的地址或者名称
(2)Port Number:WebSocker服务器监听的端口号。(一般是HTTP 80端口,可以通过WireShark数据包得到)
 
2、Timeout: 
(1)Connection – 发送一个连接请求后,Jmeter等待连接完成的最长时间,单位是毫秒。
(2)Response - 对响应消息的最大等待时间。
3、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

1、streaming选项的影响

(1)不勾选streaming

test plan设置如下:

不勾选streaming connection结果如下:

       可以看出发送的Ground control to Major Tom被返回,这个实验是成功的,从result tree的sampler result中Execution FLow中可以看出测试的结果与上面我们的设置之间的关系:用了5000毫秒的时间等待服务器的连接,用了20000毫秒的时间等待服务器的消息,且在接受到第一条消息后,关闭了这个websocket会话。

(2)勾上streaming connection

可以看到在结束测试的时候,勾上streaming那个小勾后,测试结束时streaming connection还是开着的。

(3)发送两条消息

只发送一条消息可能看不出什么区别,将Websocket sampler复制一下,发送两条信息。这样就可以看出第二条消息发送时是直接用的第一条消息打开的连接,服务器的响应被归类到一次会话的响应窗口。

 

(4)、参照参考文档设置一个测试(添加一个loop controller,设置循环次数为3)

结果如下:
         循环中的sampler都勾选了streaming,最后一个sampler没有勾选此选项,结果中可以看出:在loop controller中的sampler使用的是一个连接,在loop外面的这个sampler会打开一个新的连接,可以得出一个结论,实际上,当勾选了streaming connection时,不仅会在结束会话后保留连接,而且勾选了的sampler会在有可用连接是直接使用,而没有勾选的sampler即使存在可用连接也会重新打开一个新的连接。因此,如果是要在一个会话中发送多条消息,请勾选这个streaming connection。
 

2、如何人为的结束一段对话

这就要用到之前提到过的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、Message Backlog的设置

上面的试验使用的都是默认的3,因此如果试验中的三个socket都是是在一个会话中通信,点击第三个是可以看到最近的三个服务器响应的。当这个选项设置为1时,就只能看到最近的一条响应信息了

Jmeter中Websocket协议支持包的使用(转)的更多相关文章

  1. Jmeter中Websocket协议支持包的使用

    Jmeter中Websocket协议支持包的使用(转) 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan.cn/cFzwiyeQDKdh3 (提取码:9bcf)) 转自:ht ...

  2. Jmeter实现WebSocket协议的接口和性能测试方法

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一 ...

  3. 使用jmeter进行websocket协议压测

    第一步:添加websocket sampler组件 可以使用plugins manager进行添加,首先下载plugins manager组件: 下载路径:  https://jmeter-plugi ...

  4. jmeter中websocket接口测试

    一.Websocket协议简介 Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说: HTTP协议: HTTP的生命周期通过 Request 来界定,也就是一个 Request  ...

  5. jmeter针对websocket协议的压测

    之前一直没有接触过websocket协议,所以一直对websocket的压测存在疑惑,在网上参考文章并不断尝试之后,终于有所得:第一次用jmeter的websoket插件,用的ws非加密协议,请求都能 ...

  6. 如何在Android Studio中添加RecyclerView-v7支持包

    1.打开SDK Manager,在Extras树下找到Android Support Library,下载好支持包.RecyclerView在v7-21版本就出来了.我这里不用更新了,说明是最新的,怎 ...

  7. MQTT协议笔记之mqtt.io项目Websocket协议支持

    前言 MQTT协议专注于网络.资源受限环境,建立之初不曾考虑WEB环境,倒也正常.虽然如此,但不代表它不适合HTML5环境. HTML5 Websocket是建立在TCP基础上的双通道通信,和TCP通 ...

  8. 创建Jmeter中使用的jar包中的工具类方法

    1. 在IDEA中新建一个maven工程. 2. 编写工具类方法,如加密算法.此处以加法为例. package DemoTest; public class DemoClass{ public int ...

  9. Fiddler抓websocket协议的包,用jmeter做并发测试

    1.Fiddler: 左边为ws请求url.右边为请求数据,响应数据 jmeter:

随机推荐

  1. Sublime text3配置xdebug调试记录

    第一次配置遇到的问题记录: 问题:配置php.ini的时候xdebug.remote_port = 9001刚开始我一直配置9000端口冲突,然后一切弄好了访问浏览器就一直在转圈无法访问: 现在开始配 ...

  2. 微信公众号平台开发(二)信息的分类.md

    在上一篇博客中,我们只是简单地与微信服务器建立了连接,接下来就是从微信服务器中接收信息了.在SecurityController中,我定义了两个方法(get和post).Get方法是我们用来与微信服务 ...

  3. PHP:第三章——PHP中返回引用的函数

    <?php header("Content-Type:text/html;charset=utf-8"); $i=1; function &F(){ global $ ...

  4. python学习:变量与字符串

    counter = # 赋值整型变量 miles = 1000.0 # 浮点型 name = "John" # 字符串 print counter print miles prin ...

  5. 使用Query进行HQL语句查询和SQL语句查询

    HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的. 不带参数的查询,语句是“fro ...

  6. Engineering Management

    Engineering Management 工程師面對工作或挑戰時,可應用以下法則一步一步把工作規管和實施. 1.      Planning 計劃 2.      Organization 組織 ...

  7. memcache原理及环境搭建、测试

    一.原理       Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单 ...

  8. Root谷歌OnHub路由器

    Exploitee.rs极客小组因破解谷歌电视而成名,并且他们还发布了许多硬件相关的工具和exp.这次他们root了OnHub路由器.并发布在了他们的博客里. Google OnHub是谷歌于今年八月 ...

  9. Linux C 中获取local日期和时间 time()&localtime()函数

    1.  time() 函数 /* time - 获取计算机系统当前的日历时间(Calender Time) * 处理日期时间的函数都是以本函数的返回值为基础进行运算 * * 函数原型: * #incl ...

  10. Python 之 解码汉字乱码(如果gbk、utf8都试过不行,可以试试这个)

    起因: 使用 requests.get(url) 获取页面内容,并打印出来后显示如下: 使用 type() 查看类型也是 <type 'unicode'> print [content] ...