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

目录

一、WebSocket简介

二、JMeter测试WebSocket接口

三、WebSocket和Socket的区别

最近老被问到WebSocket,突然想到以前大学时上Java课的时候,老师教我们socket连接,一个同学电脑做客户端,一个同学电脑做服务端,当双方消息发送成功,第一次感觉到代码的奇妙~

毕竟抄代码都不利索,哈哈哈哈哈~

接下来将如何测试WebSocket接口总结下来。

一、WebSocket简介

WebSocket是一种网络通信协议,客户端和服务端只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

我们常见的协议是HTTP和HTTPS协议,客户端向服务端发起请求,服务端向客户端返回响应,完成一次请求响应之后就会断开连接。对于金融证券的实时信息、社交网络的实时消息推送、网络直播等需要实时传输数据的情况下,HTTP并不能很好的满足。

HTTP需要客户端向服务端发起请求;WebSocket服务端可以主动向客户端推送信息,客户端也可以主动向服务器发送信息。

一旦WebSocket连接建立后,后续数据都以帧序列的形式传输。在客户端断开WebSocket连接或Server端中断连接前,不需要客户端和服务端重新发起连接请求。

二、JMeter测试WebSocket接口

1、安装WebSocket插件

选项 > Plugins Manager 输入WebSocket,勾选对应插件,点击Apply Changes and Restart JMeter。

该插件包含websocket-api.jar、websocket-common.jar、websocket-client.jar、jetty-http.jar、jetty-io.jar、jetty-util.jar等JAR包。

2、WebSocket相关的取样器

  • websocket close 用于正常关闭websocket连接;
  • websocket open connection 用于显式设置websocket连接;
  • websocket ping-pong 用于发送ping和接收 pong请求;
  • websocket sampler 用于执行基本的请求-响应请求;
  • websocket single read sampler 用于接收一个文本或二进制的websocket请求;
  • websocket single write sampler 用于发送一个文本或二进制的websocket请求;

3、构建一个WebSocket接口

一般我们在网上看到的大多HTTP接口,为了方便验证,我从网上找一段Java实现WebSocket实时通讯代码,代码已经放到https://gitee.com/weimenghua/Learn-Java,运行JavaWebApplication即可启动项目,项目启动后即可进行测试。

客户端发送内容:http://127.0.0.1:63342/Learn-Java/Java-Web/com/wmh/view/socket.html。
服务端发送内容:http://127.0.0.1:9999/wbtest/sendMsg/test_websocket。

4、进行websocket接口测试

选中“线程组”右键 > 添加 > 取样器 > WebSocket Open Connection。

建立WebSocket连接:ws://127.0.0.1:9999/websocket/demo。

选中“线程组”右键 > 添加 > 取样器 > WebSocket Sampler。

发起WebSocket请求:ws://127.0.0.1:9999/wbtest/sendMsg/test_websocket。
  • Server Name or IP:发送请求的目标服务器的IP地址或者域名。
  • Port Number:服务器地址后的端口号,有则填写,没有不用填写。
  • Protocol [ws/wss]:ws是明文数据传输,wss是密文数据传输,相当于http和https的差别,默认ws。
  • Path:接口路径。
  • Request data:发送的请求数据。

我们可以再控制台看到服务端发送内容。

若需在请求完成之后关闭WebSocket连接,可添加WebScoket Close取样器。

相关脚本已放到gitee:https://gitee.com/weimenghua/wei-notebook/blob/master/JMeter/JMeter.jmx

三、WebSocket和Socket的区别

1、socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。

2、WebSocket协议是基于TCP的一种新的网络协议,和http协议一样属于应用层协议,是一种让客户端和服务器之间能进行双向实时通信的技术。

https://www.processon.com/view/link/615eae81e0b34d06f3dcdf4b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/24292.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LAMP平台搭建

文章目录 LAMP概述安装apache安装mysql安装php LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站…

Java --- 期末复习卷

一、单选题 1.所有Java应用程序主类必须有一个名叫( )的方法。[ ] A.method B.main() C.java() D.hello 2.编写并保存了一个Java程序文件之后,( )它。[ …

node笔记_http服务搭建(渲染html、json)

文章目录 ⭐前言⭐初始化项目调整npm 的script运行入口搭建hello world的http服务npm run dev执行主函数的http服务 ⭐http返回类型html模板文件返回安装express渲染html的字符串 渲染html文件 sendFile渲染json返回数据类型 res.json ⭐结束 ⭐前言 大家好,我是ym…

TensorFlow 1.x学习(系列二 :4):自实现线性回归

目录 线性回归基本介绍常用的op自实现线性回归预测tensorflow 变量作用域模型的保存和加载 线性回归基本介绍 线性回归: w 1 ∗ x 1 w 2 ∗ x 2 w 3 ∗ x 3 . . . w n ∗ x n b i a s w_1 * x_1 w_2 * x_2 w_3 * x_3 ... w_n * x_n bias w1​∗x1​w2​∗…

MySQL 对日期使用 DATE_FORMAT()函数

文章目录 DATE_FORMAT()函数显示今天是星期几只显示年月显示当前时间的分钟数和秒数 DATE_FORMAT()函数 前面使用日期时间函数,获取到的要么是 yyyy-mm-dd 形式的日期,要么是 hh:MM:ss 形式的时间,或者是 yyyy-mm-dd hh:mm:ss 形式的日期及时…

算法基础学习笔记——⑧堆\哈希表

✨博主:命运之光 ✨专栏:算法基础学习 目录 ✨堆 🍓堆模板: ✨哈希表 🍓一般哈希模板: 🍓字符串哈希模板: 前言:算法学习笔记记录日常分享,需要的看哈O(…

Qt文件系统源码分析—第六篇QSaveFile

深度 本文主要分析Windows平台,Mac、Linux暂不涉及 本文只分析到Win32 API/Windows Com组件/STL库函数层次,再下层代码不做探究 本文QT版本5.15.2 类关系图 QTemporaryFile继承QFile QFile、QSaveFile继承QFileDevice QFileDevice继承QIODevice Q…

远程访问本地jupyter notebook服务 - 无公网IP端口映射

文章目录 前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 转载自远控源码文章:公网远程访问jupyter notebook【cpolar内网穿透】 前言 Jupyter Notebook&am…

网络原理(六):http 协议(上)

目录 HTTP 协议是什么 抓包工具 Fiddler 的下载 使用Fiddler HTTP 请求 (Request) HTTP 请求格式 首行 请求头(Header) Cookie HTTP 协议是什么 还是老样子,在讲解http 之前我们先来了解以下什么叫做 http 。 HTTP(Hyp…

(转载)从0开始学matlab(第14天)—while循环结构

循环(loop) 是一种 matlab 结构,它允许我们多次执行一系列的语句。循环结构有两种基本形式 :while 循环和 for 循环。两者之间的最大不同在于代码的重复是如何控制的。在while 循环中,代码的重复的次数是不能确定的,只要满足用户定义的条件…

整理6个超好用的在线编辑器!

随着 Web 开发对图像可扩展性、响应性、交互性和可编程性的需求增加,SVG 图形成为最适合 Web 开发的图像格式之一。它因文件小、可压缩性强并且无论如何放大或缩小,图像都不会失真而受到欢迎。然而,为了编辑 SVG 图像,需要使用 SV…

《五》 Git 中的标签和分支

标签 tag: Git 可以给仓库中某一次 commit 的提交打上标签。对于重大的版本经常会打上一个标签来表示它的重要性。 创建标签: git tag【tag 名称】:创建标签。 查看标签: git tag:查看标签。 推送标签到远程仓库…

任务40 评奖系统设计

系列文章 任务40 评奖系统设计 为教务处设计一个学生评价老师的程序: 每位学生投一张票,选出自己最喜爱的老师,选票格式为: | 第一喜爱的老师 | 第二喜爱的老师 |第三喜爱的老师 | | 工号 |工号 |工号 | 上述数据存放在一个数据…

随机网络构建

随机网络构建 文章目录 随机网络构建[toc]1 随机网络定义2 网络拓扑性质2.1 边数分布2.2 度分布 3 代码实现 1 随机网络定义 随机网络与规则网络相对应,最为经典的随机网络模型是Erds和Rnyi研究的ER随机图模型,ER随机图模型有两种定义方式: …

三种快速转换PDF为TXT的方法:简单、高效、免费

如何将PDF转换为TXT文件?在日常生活中,PDF和TXT是常见的文本格式。PDF格式文件具有稳定的布局和易于存储的特点。然而,许多在线下载的电子书通常是以PDF格式提供的,而电子阅读器通常不支持PDF格式,这就导致了无法方便地…

字节软测划水四年,内容过于真实......

先简单交代一下吧,潇潇是某不知名211的本硕,18年毕业加入一个小厂,之后跳槽到了字节跳动,一直从事测试开发相关的工作。之前没有实习经历,算是四年半的工作经验吧。 这四年半之间他完成了一次晋升,换了一家…

SAP-MM-计算方案字段解析

01、 “步骤”:标识此条件类型在计算方案中的顺序编号,此编号会影响到后续业务中条件类型的排序,不同条件类型之间的编号最好间隔大一些,这样设置便于以后对计算方案进行扩展; 02、 “计数器”&#xff1…

Apache Kafka - 重识消费者

文章目录 概述Kafka消费者的工作原理Kafka消费者的配置Kafka消费者的实现高级API低级API 导图总结 概述 Kafka是一个分布式的消息队列系统,它的出现解决了传统消息队列系统的吞吐量瓶颈问题。 Kafka的高吞吐量、低延迟和可扩展性使得它成为了很多公司的首选消息队…

面试前15天刷完这个笔记,拿下字节测开岗offer....

面试,跳槽,每天都在发生,跳槽,更是很常见的,对于每个人来说,跳槽的意义也各不相同,可能是一个人更向往一个更大的平台,更好的地方,可以通过换一个环境改变自己的现状。而…

解密Java Class文件不为人知的秘密

Java 诞生多年,因此在网络上,有关 Java Class 文件格式解析的文章有很多,但他们大多数都是在列举《Java 虚拟机》中定义的格式,通读下来,好像所有的东西都讲清楚了,但是我个人好像并没有看懂,不…