当前位置: 首页 > news >正文

遇到Websocket就不会测了?别慌,学会这个Jmeter插件轻松解决....

websocket 是一种双向通信协议,在建立连接后,websocket服务端和客户端都能主动向对方发送或者接收数据,而在http协议中,一个request只能有一个response,而且这个response也是被动的,不能主动发起。

websocket优势:

当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端啦。

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

这样的协议解决了上面同步有延迟,而且还非常消耗资源的这种情况。

一、WebSocket插件安装及使用

1、安装ws插件,并重启jmeter

 

 

2、WebSocket的使用

重启jmeter 后,添加线程组,右键添加取样器,会出现WebSocket 相关插件

(1)不勾选streaming

(2)勾上streaming connection

(3)设置一个测试(添加一个loop controller,设置循环次数为3)

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

(4)输入request data 查看结果

二、常规选项解释

1、WebServer

  • Server Name or IP:WebSocket发送的目标服务器的地址或者名称
  • Port Number:WebSocker服务器监听的端口号。(一般是HTTP 80端口,可以通过WireShark数据包得到)

2、Timeout

  • Connection – 发送一个连接请求后,Jmeter等待连接完成的最长时间,单位是毫秒。
  • Response - 对响应消息的最大等待时间。

3、WebSocket Request

  • Implementation – 只支持RFC6455(v13) ,WebSocket协议标准的最新版。
  • Protocol – 有ws与wss之分, ws前缀是WebSocket连接的辨别标识,wss前缀是WebSocket安全连接的辨别标识。根据自己的实际情况填写
  • Streaming Connection – 选择这个TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么得到第一次响应后该链接就会被关闭。
  • Request data:填入将要发送的请求,要跟开发沟通好,这个是什么格式的消息。

4、WebSocket Response

  • Response Pattern – 采样器将等待含有该标识的消息并继续通信(或者直到timeout,该连接关闭)
  • Close Connection Pattern – 如果服务器返回的消息含有这样的字符,就结束会话。
  • Message Backlog – 定义服务器返回消息保留的最大长度。
三、WebSocket解决服务器上消耗资源的原理

其实我们所用的程序是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,然后再传送给相应的Handler(PHP等)来处理。

简单地说:我们有一个非常快速的接线员(Nginx),他负责把问题转交给相应的客服(Handler)。

本身接线员基本上速度是足够的,但是每次都卡在客服(Handler)了,老有客服处理速度太慢,导致客服不够。

Websocket就解决了这样一个难题,建立后,可以直接跟接线员建立持久连接,有信息的时候客服想办法通知接线员,然后接线员在统一转交给客户。这样就可以解决客服处理速度过慢的问题了。

同时,在传统的方式上,要不断的建立,关闭HTTP协议,由于HTTP是非状态性的,每次都要重新传输identity info(鉴别信息),来告诉服务端你是谁。虽然接线员很快速,但是每次都要听这么一堆,效率也会有所下降的,同时还得不断把这些信息转交给客服,不但浪费客服的处理时间,而且还会在网路传输中消耗过多的流量/时间。

Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。

同时由客户主动询问,转换为服务器(推送)有信息的时候就发送(当然客户端还是等主动发送信息过来的…),没有信息的时候就交给接线员(Nginx),不需要占用本身速度就慢的客服(Handler)了。

四、chrome查看WebSocket

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

http://www.lryc.cn/news/407257.html

相关文章:

  • 高性能 Java 本地缓存 Caffeine 框架介绍及在 SpringBoot 中的使用
  • Http 和 Https 的区别(图文详解)
  • DP学习——外观模式
  • Vue3 + Vite 打包引入图片错误
  • 搭建NFS、web、dns服务器
  • C++的UI框架和开源项目介绍
  • SpringBoot连接PostgreSQL+MybatisPlus入门案例
  • vue3里将table表格中的数据导出为excel
  • 【算法】分布式共识Paxos
  • 软考:软件设计师 — 5.计算机网络
  • C++ //练习 15.28 定义一个存放Quote对象的vector,将Bulk_quote对象传入其中。计算vector中所有元素总的net_price。
  • Midjourney绘画提示词精选
  • Kylin中的RBAC:为大数据安全加把锁
  • DDoS 攻击下的教育网站防护策略
  • Android13以太网静态IP不保存的问题
  • Redis 7.x 系列【31】LUA 脚本
  • mysql中You can’t specify target table for update in FROM clause错误
  • Linux Vim最全面的教程
  • setsockopt选项对tcp速度
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号3
  • bool数组的理解和应用[C++]
  • JavaScript模拟滑动手势
  • Text Control 控件教程:使用 .NET C# 中的二维码和条形码增强文档
  • 最新爆火的开源AI项目 | LivePortrait 本地安装教程
  • 揭秘Django与Neo4j:构建智能知识图谱的终极指南
  • 项目一缓存商品
  • SEO与数据中心代理IP的结合能带来哪些便利?
  • 《昇思25天学习打卡营第6天|ResNet50图像分类》
  • Activiti 6 兼容openGauss数据库bytes类型不匹配
  • 缓存技术:提升性能与效率的利器