别光顾剁手了,来学习下双12背后的websocket技术

作为测试工程师,相信http协议大家都耳熟能详了。最近经常测试websocket接口,估计很多童鞋这个比较陌生,所以今天我们来主要聊一下websocket。

首先给大家说一个生活中的场景吧,我们在电商平台买东西的时候都会去找客服聊天,那么大家知道我们是如何跟客服进行通信的吗? 

类似上面这种场景,买家和卖家的通信过程是这样的:

买家向服务器发起消息,然后服务器把消息推送给商家。商家有消息再把消息给服务器,服务器把消息转给买家。

如果我们用http协议来实现的话,客户端跟服务器是如下图所示进行交互

 

买家: 亲,这个商品有优惠券吗?

服务器:收到消息,等待卖家拉取消息

买家(问服务器): 有回复消息吗

服务器回复:当前没有消息

one second later......

买家(问服务器): 有回复消息吗

服务器回复:当前没有消息

卖家回复: 双12全场5折

服务器: 收到消息,等待买家拉取消息

买家(问服务器): 有回复消息吗

服务器: 有消息,消息内容:双12全场5折

......

童鞋们觉得这种交互模式可以吗?有什么缺点吗?是不是很消耗服务器的性能?

答案是肯定的,以上方式非常消耗服务器的性能,因为http协议的被动性,所以只能由客户端不断的主动向服务器发起HTTP请求,服务端被动的进行响应。在这个过程中,服务器是不能主动的发起消息。这样尽管服务器上此时没有消息,但是客户端还是需要一次次来轮询请求。大家试想一下,如果服务器能主动的发起请求,等到有消息推送的时候,服务器主动的发起消息给客户端,那么是不是会节省很多服务器的性能呢?

所以我们的websocket协议就应运而生了,因为websocket协议可以在客户端和服务端之间进行双向数据传输,所以非常完美的解决了这个问题。那么接下来我们详细的介绍一下websocket协议,它是基于tcp的一种独立实现。

还是上面那个场景,如果采用websocket协议,客户端和服务器的聊天模式如下:

买家:啦啦啦,我要建立Websocket协议

服务端:ok,确认,已升级为Websocket协议(HTTP Protocols Switched),长链接已建立。

买家: 亲,这款LV包包有优惠券吗?

服务器:收到消息,已推送至卖家

卖家收到消息后回复: 亲,这款包包现在可以直减10元

服务器: 收到消息,已推送至买家

卖家主动回复: 亲还在吗?

服务器: 收到消息,已推送至买家

买家收到了两条推送消息.

......

买家内心OS:打扰了,告辞

买家下线,链接断开

正因为上面说的一些特点,websocket非常适合对数据实时性要求比较高的场景。当服务端有数据的时候,第一时间推送至客户端,而不需要客户端定时轮询请求。

比如弹幕,消息订阅,多玩家游戏,协同编辑,股票基金实时报价,视频会议,在线教育等等。

好的,今天websocket协议的原理就给大家分享这些了,童鞋们有问题可以在讨论区留言哟,如果大家还想看如何用jmeter做websocket接口自动化测试的话,可以在讨论区留言哟,后续分享下基于jmeter的websocket测试。

作  者: 夭夭老师 

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

posted @   码同学软件测试  阅读(88)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-12-16 区块链火爆,再不知道Golang就晚了
2019-12-16 Jmeter中间件处理-ActiveMQ
2019-12-16 外包人员:互联网公司【二等公民】...
2019-12-16 测试工作绝不仅限于点点点!
2019-12-16 面试时,如何在1分钟内更好的展现自己?
2019-12-16 Jmeter官方插件实现Dubbo接口测试
点击右上角即可分享
微信分享提示