因为我之前对WebSocket接口也不是很了解,所以本篇文章先简单的概括的说明一下WebSocket的相关概念。在文章的后半部分,进行测试WebSocket接口的步骤说明。

1、什么是WebSocket接口

WebSocket是一种网络通信协议。

我们在上网过程中经常用到的是HTTP和HTTPS协议,HTTP协议和HTTPS协议的通信过程,通常是客户端通过浏览器发出一个请求,服务器按受请求后进行处理并返回结果给客户端,客户端接收响应的结果。

这种机制对于信息变化不是特别频繁的应用,可以良好支撑。但对于实时信息要求高、海量并发的应用来说,显得捉襟见肘。尤其在移动互联网蓬勃发展的趋势下,高并发与用户实时响,应是Web应用经常面临的问题。比如金融证券的实时信息、社交网络的实时消息推送、网络直播等。

Websocket通信协议出现前我们实现推送技术,用的都是轮询,在特定的时间间隔,浏览器自动发出请求,将服务器的消息主动的拉回来。这种情况下,我们需要不断的向服务器发送请求,这样会占用很多的带宽和服务器资源,并且服务器不能主动向客户端推送数据。在这种情况下需要一种高效节能的双向通信机制,来保证数据的实时传输,于是基于HTML5规范的WebSocket网络通信协议应运而生。

WebSocket是类似Socket的TCP长连接通讯模式。一旦WebSocket连接建立后,后续数据都以帧序列的形式传输。在客户端断开WebSocket连接或Server端中断连接前,不需要客户端和服务端重新发起连接请求。在海量并发,及客户端与服务器交互负载流量大的情况下,极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实时性优势明显。

2、为什么需要WebSocket

初次接触 WebSocket的人,都会问同样的问题:我们已经有了HTTP协议,为什么还需要另一个协议?它能带来什么好处?

答案很简单,因为HTTP协议有一个缺陷:通信只能由客户端发起。

举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP协议做不到服务器主动向客户端推送信息。

这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询",每隔一段时候,就发出一个询问,了解服务器有没有新的信息。轮询的效率低,非常浪费资源。因此,工程师们一直在思考,有没有更好的方法,WebSocket就是这样发明的。

WebSocket的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

WebSocket是双向的,在客户端和服务器通信的场景中使用的全双工协议,与HTTP不同,它以ws://wss://开头。它是一个有状态协议,这意味着客户端和服务器之间的连接将保持活动状态,直到被任何一方(客户端或服务器)终止,WebSocket连接才从两端终止。

3、测试WebService接口前的准备

在JMeter中测试WebSocket协议的接口,需要先安装WebSocket插件和依赖包。

打开JMeter中的插件管理器:选项 —> Plugins Manager

Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834

打开JMeter插件管理器后,点击Available Plugins选项页,在搜索框中输入WebSocket,然后选择安装WebSocket Sampler by Maciej Zaleski插件。

我们可以从上图中看到在插件的说明中,该插件包含websocket-api.jarwebsocket-common.jarwebsocket-client.jarjetty-http.jarjetty-io.jarjetty-util.jar这6个JAR包。

这些JAR包可以使JMeter中的取样器,发送支持WebSocket协议的请求。

如下图所示:

提示:安装完WebSocket Sampler by Maciej Zaleski插件后需要重启JMeter。

4、WebSocket Sampler组件界面详解

WebSocket Sampler组件添加方式:选中“线程组”右键 —> 添加 —> 取样器 —> WebSocket Sampler

界面如下图所示:

针对界面中各选项说明:

  • 名称WebSocket Sampler组件的自定义名称,见名知意最好。
  • 注释:即添加一些备注信息,对该WebSocket Sampler组件的简短说明,以便后期回顾时查看。

(1)WebServer

  1. Server Name or IP:发送请求的目标服务器的IP地址或者域名。
  2. Port Number:服务器地址后的端口号,有则填写,没有不用填写。

(2)Timeout (milliseconds)

  1. Connection:链接建立的最大超时时间,单位毫秒。如果达到超时时间设置后链接未建立,则sampler失败。
  2. Response :对响应消息的最大等待时间,单位毫秒。到达设定时间后WebSocket链接关闭。

(3)WebSocket Request

  1. Implementation:只支持RFC6455(v13) ,WebSocket协议标准的最新版。
  2. Protocol:有wswss之分。ws前缀是WebSocket连接的辨别标识,wss前缀是WebSocket安全连接的辨别标识。根据自己需要访问接口的实际情况填写。
  3. Content encoding:内容编码。有中文推荐编写UTF-8。
  4. Connection Id:连接ID。
  5. Path:访问接口的路径。
  6. Ignore SSL certificate errors:忽略SSL证书错误。
  7. Streaming connection:选择TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么第一次响应后该链接就会被关闭。

(4)同请求一起发送参数

  • 可以填写key-value形式的参数。(发送了好像不太好使,请求参数还是填写在下面的Request data中吧)
  • Request data:填入同请求一起发送参数,与HTTP采样器类似,结合被测接口说明文档来进行配置。

(5)Web Socket Response:接口响应相关设置

  1. Response pattern:采样器将等待含有该标识的消息并继续通信(或者直到timeout,该连接关闭)
  2. Close connection pattern:如果服务器返回的消息含有填写的字符,就结束会话。
  3. Proxy Server (currently not supported by Jetty):编辑代理服务器信息代(当前不支持Jetty)
    Server Name or IP:服务器IP地址或域名。
    Port Number:端口号。
    Username:用户名。
    Password:密码。
  4. Message Backlog:定义服务器返回消息保留的最大长度。

5、使用JMeter测试WebSocket接口示例

我们请求一个WebSocket接口为例,进行演示。

访问地址:echo.websocket.org

(1)测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组中,添加取样器WebSocket Sampler组件:选中“线程组”右键 —> 添加 —> 取样器 —> WebSocket Sampler
  4. 在线程组中,添加监听器“察看结果树”组件:选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)WebSocket Sampler组件内容

就和编辑HTTP请求一样,编写必要的请求信息和请求数据即可。

编辑WebSocket接口内容,如下图所示:

(3)运行查看结果

结果如下图所示

说明使用JMeter成功发送WebSocket请求并且得到了响应。

Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834

使用JMeter测试WebSocket接口相关推荐

  1. jmeter 测试websocket接口(一)

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

  2. 【接口测试】JMeter测试WebSocket接口

    目录 一.WebSocket简介 二.JMeter测试WebSocket接口 三.WebSocket和Socket的区别 最近老被问到WebSocket,突然想到以前大学时上Java课的时候,老师教我 ...

  3. Apache JMeter 测试 HTTP接口

    一.设置基础组件 1. Apache JMeter 测试 HTTP接口流程 原则:简单的http请求而已,例如:PostMan测试一样的 1.添加一个线程组 2给线程组添加一个取样器,用来发送HTTP ...

  4. Apache JMeter 测试webservice接口

    文章目录 Apache JMeter 测试webservice接口流程 一.设置基础组件 1. 添加一个线程组 2. HTTP信息头管理器 3. HTTP请求 4. 添加一个察看结果树 5. 添加一个 ...

  5. 浏览器控制台简单测试websocket接口收发

    浏览器控制台简单测试websocket接口收发 打开一个网页 F12打开控制台 ws = new WebSocket('ws://121.40.165.18:8800'); 或者 ws = new W ...

  6. jmeter测试webservice接口

    webservice怎样使用jmeter测试呢? 测试样例url=http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx ...

  7. 运维测试工作笔记0003---使用Jmeter测试_http接口_高并发测试

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 实际上jmeter可以测试很多不光是http的高并发测试 1.先去Jmeter官网下载Jmeter ...

  8. 基于jmeter测试web接口,看完都说学会了

    最近接到一个需求,产品说要对一个接口做负载均衡.当时我听到这个需求的时候,我的内心是奔溃的--这接口只有一个,怎么做负载均衡,负载均衡起码得有两个才能做啊! 最后理解了产品想要做的东西:由于线上某接口 ...

  9. 使用Jmeter测试Restful接口

    一.添加线程组等元件 添加线程组   1. 添加线程组,Jmeter执行是通过线程组进行驱动的,测试计划必须最少有一个线程组,选中Test Plan,点击右键,添加>Threads>线程组 ...

最新文章

  1. C++ STL 常用遍历算法
  2. 【追一科技校招】AI浪潮已来,你不可错过的澎湃风口!
  3. 地图索引 R-tree
  4. 最酷的windows后门 呵呵
  5. Push rejected: Push to origin/master was rejected
  6. 计算矢量面积_航天器轨道参数计算推导
  7. action script3.0殿堂之路_【日本乐坛传奇】松任谷由实是谁?新音乐女王的登基之路!...
  8. 5404. 用栈操作构建数组
  9. linux_安装jdk和mysql简单步骤记
  10. SQL Server Alwayson创建代理作业注意事项
  11. bluez 设置绑定pin码_「RT-Thread笔记」IO设备模型及PIN设备
  12. Gson格式转换Integer变为Double类型问题解决
  13. 计算机计算与计算思维必掌握知识,计算思维与计算机基础教学探究
  14. 邮箱 POP3服务器(端口110) SMTP服务器(端口25)
  15. 关于企业微信中开发第三方应用遇到的退出问题
  16. java实现中国象棋1:界面的制作
  17. 路由配置与管理——静态路由配置与管理
  18. 一款开源的Java在线考试系统项目(附源码)
  19. faker和劫的图片_Faker:对“双劫”印象最深,F闪天下第一|靠谱靠靠谱
  20. (转载)机器学习方法的PPT .

热门文章

  1. Aruba7010 默认密码_钟祥人注意!手机这个密码必须设,否则危险!
  2. 2020中国云厂商预测:华为云、UCloud、青云、百度云、金山云等,谁是第三很重要?...
  3. VMware NSX 6组件通信图
  4. Docker学习总结(34)——新手使用Docker的11条准则
  5. 你不知道的《阿里巴巴Java开发手册》背后故事
  6. Myeclipse学习总结(15)——Eclipse/MyEclipse中Maven项目常见问题解决汇总
  7. 互联网产品之百万级高并发技术整体架构
  8. Java基础学习总结(91)——阿里巴巴Java开发手册公开版
  9. 计算机教学训练的有效性,充分利用现代教育技术   提高课堂教学有效性
  10. python数据库操作封装_Python 封装一个操作mysql的类