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

news2024/11/23 2:25:53

目录

一、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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试的风险主要体现在哪里

软件测试的风险主要体现在哪里 在软件开发中,测试是至关重要的一环,它能够帮助我们及时发现和解决问题,提高软件质量,但同时也存在着一些风险。 首先,测试不充分可能导致漏洞存在。如果测试人员没有覆盖到某些场景或者…

怎么买美股?如何选择美股交易订单类型?

怎么买美股,前文说的开立美股账户只是基础的一步。在正式开始美股交易前,还有许多准备工作需要完成,其中就包括选择美股交易订单类型。市场上的美股交易订单类型有哪些?如何选择适合自己的美股交易订单类型? 美股交易订…

Matlab论文插图绘制模板第94期—带置信区间的折线散点图

在之前的文章中,分享了很多Matlab带置信区间的折线图的绘制模板: 进一步,再来分享一下带置信区间的折线散点图的绘制模板。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友…

档案馆空气质量在线3D监控系统温湿度方案

档案馆库房八防温湿度空气质量一体化解决方案 档案库房是档案事业发展的基石,其主要任务是集中保管国家机构及个人等在各种形式下形成的具有一定价值和保存价值的各种载体档案,主要包括文书档案、科技档案、会计档案、人事档案、实物档案等。随着我国经济…

chatgpt赋能python:Pythonsavefig的保存路径在哪里?

Python savefig的保存路径在哪里? 如果你是一位拥有10年Python编程经验的工程师,你肯定知道Python的可视化库(matplotlib)是一个非常有用的工具,能够帮助我们将数据转化为直观的图表,以便更好地展示和理解…

02 Maven创建及使用

maven作用 主要用作基于java平台的项目 maven能提供一种项目配置 maven能自动从maven的中央仓库帮我们自动下载并管路项目依赖的jar包 提供了标准的目录结构 中央仓库两种类型:共有的中央仓库:私有中央仓库 使用mvn -v查看是否安装成功 修改本地仓库的的位置 在setting…

LeetCode链表题?来让我帮你图解剖析

💐文章导读 本篇文章主要详细的用图解的方式为大家讲解了简单程度的链表题,如果题中有错误的地方,还麻烦您在评论区指出,你的意见就是我最大的进步!!! 💐专栏导读 🤴作者…

免费用GPT4方法,速看可能会被删

介绍4种免费使用GPT4的方法,最后一个目前能多轮对话基本没限制。 1. forefront https://chat.forefront.ai/ 不登陆只能用GPT3.5,登陆后可以使用GPT4(每3小时5条消息) 2、poe https://poe.com/GPT-4 登陆后,每天…

【追梦之旅】—— 手“C”二叉树~

【追梦之旅】—— 手“C”二叉树~😎 前言🙌什么是二叉树?!特殊的二叉树二叉树的性质二叉树的存储结构二叉树链式结构的实现二叉树的链式结构:二叉树的创建。 二叉树的遍历前序遍历(先根遍历)中序…

java springboot yml文件配置 多环境yml

如果是properties改用yml,直接改后缀,原文件中的配置语法改用yml的语法即可,系统会自动扫描application.properties和application.yml文件(注意:改了之后需要maven 命令 clean一下,清个缓存)。 …

VSOMEIP3抓包数据

环境 $ cat /etc/os-release NAME"Ubuntu" VERSION"20.04.6 LTS (Focal Fossa)" IDubuntu ID_LIKEdebian PRETTY_NAME"Ubuntu 20.04.6 LTS" VERSION_ID"20.04" HOME_URL"https://www.ubuntu.com/" SUPPORT_URL"https:/…

简洁灵活工单管理系统,支持工单模版字段、工单状态自定义

一、开源项目简介 本项目为FeelDesk工单管理系统的开源版(OS),是基于开发者版(DEV)分离的标准版;支持工单模版字段、工单状态等自定义,可为不同的模版设置不同的路由规则;对工单需求…

信号在MATLAB中的运算——信号的相加相乘

信号在MATLAB中的运算——信号的相加相乘 信号的相加和相乘是指同一时刻信号取值的相加和相乘。 对于离散序列来说,序列相加是将信号对应时间序列的值逐项相加,在这里不能像连续时间信号那样用符号运算来实现,而必须用向量表示的方法&#…

Python获取北上广深历史天气数据并做数据可视化

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 知识点: 动态数据抓包 requests发送请求 结构化非结构化数据解析 开发环境: 开发环境: python 3.8 运行代码 pycharm 2022.3.2 辅助敲代码 专业版 模块使用: requests 发送请求 pip install requests par…

2.2.2 部署Master节点、添加Node节点

2.2.2 部署Master节点 1.安装docker、kubeadm、kubelet、kubectl 前面我们已经完成了虚拟机中系统的初始化,下面我们就在我们所有的节点上安装docker、kubeadm、kubelet、kubectl。 Kubernetes默认CRI(容器运行时)为Docker,因此…

【JavaScript】拾遗(5.25)

文章目录 1. JavaScript2.HTML嵌入JS的第一种方式:行间事件3.HTML嵌入JS的第二种方式:脚本块的方式4. HTML嵌入JS的第三种方式:外部式(外链式)5. 局部变量和全局变量6. 函数7.事件8.回调函数8.1 注册事件8.2 代码的执行顺序 1. JavaScript JavaScript是一门脚本语言。&#xf…

微服务开发系列 第六篇:Redisson

总概 A、技术栈 开发语言:Java 1.8数据库:MySQL、Redis、MongoDB、Elasticsearch微服务框架:Spring Cloud Alibaba微服务网关:Spring Cloud Gateway服务注册和配置中心:Nacos分布式事务:Seata链路追踪框架…

动态规划-分割回文串 II

动态规划-分割回文串 II 1 题目描述2 示例2.1 示例 1:2.2 示例 2:2.3 示例 3:2.4 提示: 3 解题思路和方法3.1 解题思路3.1.1 确定状态3.1.2 转移方程3.1.3 初始条件和边界情况3.1.4 计算顺序3.1.5 回文串的判断方法 3.2 算法代码实…

day17 - 用形状包围图像

在进行图像轮廓提取时,有的情况下不需要我们提取出精确的轮廓,只要提取出一个接近于轮廓的近似多边形,就可以满足后续的操作。 本期我们来学习如何通过设置参数来找出图像的近似多边形。 完成本期内容,你可以: 了解…

《汇编语言》- 读书笔记 - 第5章- [BX]和 loop 指令

《汇编语言》- 读书笔记 - 第5章- [BX]和 loop 指令 5.1 [BX]问题 5.1 5.2 Loop 指令任务 1任务 2任务 3程序 5.1问题 5.2问题 5.2 5.3 在 Debug 中跟踪用 loop 指令实现的循环程序5.4 Debug 和汇编编译器 masm 对指令的不同处理DebugMASM 5.5 loop 和[bx]的联合应用程序 5.5问…