一、Websocket协议简介

Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说;

HTTP协议

HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了。

在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。

Websocket协议:

WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;
WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。

WebSocket只需要经过一次HTTP请求,就可以做到源源不断的信息传送了(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你)

二、添加Websocket插件

在jmeter中测试websocket协议接口,需要先安装websocket插件和依赖包;

需添加的插件为:

JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar

插件依赖的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

准备好这些jar包后,将它们拷贝到Jmeter目录的\lib\ext\下。

打开jmeter,在sampler下,可以查看到websocket sampler

三、Websocket sampler说明

在jmeter中,创建websocket sampler,界面如下;

针对界面中各选项说明如下:

1、WebServer

(1)Server Name or IP:WebSocket发送的目标服务器的地址或者名称

(2)Port Number:WebSocker服务器监听的端口号。(一般是HTTP 80端口,可以通过fiddler、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 – 定义服务器返回消息保留的最大长度。

四、应用实例:

项目场景:

在某项目页面中点击某个按钮之后,会建立一个websocket长连接,实时监控返回的值;

并间隔30s发送心跳数据,保持连接;

通过浏览器的F12获取websocket的连接信息;在network->ws中,查看websocket的连接信息;

进入Frames标签页,可查看websocket通道发送和接收的数据

其中‘1686-77296’为发送的数据,‘ok’为接收到的响应数据

在发送‘1686-77296’数据之后,会间隔30s发送心跳连接数据,数据内容为空,直到接收到‘ok’后,该websocket通道连接关闭。

接下来,依据上述信息,在jmeter的websocket sampler中填入对应的值

利用while 控制器,间隔30s循环发送心跳,直到接收到期望的返回值,跳出while循环;

运行后,查看结果树如下所示:

jmeter中websocket接口测试的更多相关文章

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

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

  2. Jmeter中Websocket协议支持包的使用(转)

    转自:http://blog.csdn.net/typing_yes_no/article/details/49512167 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan ...

  3. Jmeter进行webSocket接口测试

    一.运行Jmeter (1) 去官方网站下载jmeter(版本为3.3)并解压.点击bin/jmeter.bat启动jmeter (2)  新建线程组. (3) 在线程组中新建WebSocket Sa ...

  4. jenkins+jmeter+ant搭建接口测试平台

    接口测试的重点是检查数据的交换,传递和控制管理过程以及系统间的相互逻辑依赖关系. 接口测试的流程 项目启动后,测试人员要尽早拿到接口测试文档. 开始编写接口测试用例 将接口测试用例部署到持续集成的测试 ...

  5. jmeter 测试websocket接口(一)

    jmeter 测试websocket接口时,需要对jmeter添加测试websocket的jar包. 下载地址: https://download.csdn.net/download/qq_14913 ...

  6. jmeter 测试 websocket 接口

    https://www.cnblogs.com/penghaihang/p/7724830.html(请求的亲测ok) https://www.jianshu.com/p/bb8b3e928607 h ...

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

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

  8. 使用Jmeter进行HTTP接口测试

    这几天学习了一下使用Jmeter进行HTTP接口测试,这个也是后面进行性能测试的基础吧 安装运行请自行搜索,下载地址:http://jmeter.apache.org/download_jmeter. ...

  9. 使用jmeter进行APP接口测试经验总结

    声明:我觉得文章不错想保存,如果带来不便请联系我. 使用工具: Fiddler.Jmeter 测试步骤: 1.    确认接口 从开发人员那里获取接口文档,接口文档应该包括完整的功能接口.接口请求方式 ...

随机推荐

  1. SRDC - ORA-1628: Checklist of Evidence to Supply (Doc ID 1682729.1)

    SRDC - ORA-1628: Checklist of Evidence to Supply (Doc ID 1682729.1) Action Plan 1. Execute srdc_db_u ...

  2. cluster集群基本概念

    cluster集群种类: 1,LB(Load Balance)负载均衡集群: 弱点:当横向扩展到一定机器后,发现在怎么横向加机器也没有效果的时候,瓶颈就卡在分发的服务器上了,也就是LB机器上了,如何解 ...

  3. windows宿主机和docker容器设置挂载共享文件夹

    docker容器内的程序经常需要访问.调用宿主机目录中的数据,每次都要导入导出非常麻烦费力. 接下来,一步步实现将宿主机的指定文件夹挂载到docker容器中. 1. 打开Oracle VM Vitua ...

  4. react界面跳转,滚动到顶部

    在使用react-router-dom时,我们经常会遇到路由切换时滚动到浏览器顶部的问题. 滚动到顶部 Scroll to top 很多时候我们需要的是滚动到顶部“Scroll to top”,因为发 ...

  5. Linux中自旋锁

    传统的spinlock Linux的的内核最常见的锁是自旋锁.自旋锁最多只能被一个可执行线程持有.如果一个执行线程试图获得一个被已经持有(争用)的自旋锁,那么该线程就会一直进行忙循环-旋转-等待锁重新 ...

  6. 2019.6.11_MySQL进阶二:主键与外键

    通过图形界面(UI)创建外键 打开设计表,在对应的栏位填写相应的内容.其中FK_deptno是限制名 # 先给主表建立主键   ALTER TABLE dept ADD PRIMARY KEY(dep ...

  7. 在Python中用许多点找到两个最远点的点

    我需要找到距离彼此最远的两个点. 正如屏幕截图所示,我有一个包含其他两个数组的数组.一个用于X,一个用于Y坐标.确定数据中最长线的最佳方法是什么?通过这样说,我需要选择情节中最远的两个点.希望你们能帮 ...

  8. Springboot上传图片并访问

    Springboot上传图片并访问 步骤 配置绝对路径,并将这个绝对路径添加到springboot静态资源目录中. 文件上传使用绝对路径保存.返回web相对路径,前端加上域名和项目路径,生成完整的路径 ...

  9. 【转】java MessageDigest类的作用 :提供信息摘要 算法( MD5 或 SHA 等)的功能

    一.结构和概述: java.lang.Object java.security.MessageDigestSpi java.security.MessageDigest 声明:public abstr ...

  10. 一种单机支持 JavaWeb 容器万级并发的设想

    当前的大部分 Java web 容器基于 Bio 线程模型,例如常见的 tomcat ,默认 200 线程,即 200 连接.由此带来的问题是,如果想提高并发,或者提高资源利用率,就得加大线程数. 如 ...