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

面经学习-WebSocket

WebSocket

服务器主动发送信息给客户端

HTTP不断轮询

伪服务器推送,前端代码不断发送http请求到服务器,服务器收到信息返回响应,例如扫码登录中不断询问后端二维码是否已经被扫

缺点:1HTTP请求多,2用户能感受到明显卡顿

长轮询

为HTTP请求设置一个长超时,服务器收到扫码请求后才返回响应到客户端网页,如果超时则由客户端发起下一次请求

这就是服务器推送技术

WebSocket

TCP两端,双方都可以同时发送数据给对方,是全双工的

而使用的HTTP协议是半双工的,同时只有一方能发送信息

为了支持客户端和服务端都要相互发送大量数据的场景研发了websocket

怎么建立连接

TCP三次握手后,统一使用http协议进行一次通信,如果想要建立websocket连接,则在http请求中带上特殊的头部

image-20250814115605407

意思分别是

1升级协议

2指定协议为websocket

3随机生成的base64码

服务器支持websocket就走websocket握手流程,再根据base64码使用公开算法变成另一段字符串,放在响应的Sec-WebSocket-Accept头里,再带上101状态码(协议切换)发回给浏览器

image-20250814115837971

同时浏览器也自己将base64码转换为对应字符串,并检查是否和服务器发回的字符串相同,这样一来一回就握手成功,使用websocket的数据格式进行通信

websocket的消息格式

image-20250814120002304

opcode:标识数据帧类型,如1指text类型,2指二进制数据byte类型,8是关闭连接的信号

payload:存放真正想要传输数据的长度,单位是字节,有好几个位置,用户可以用前面的7,也可以7+16或7+64

读取时,先读前7位,若为126,则读后16位,若为127则读后64位

payload data:存放真正的数据

使用场景

使用客户端和服务端频繁交互的场景,例如网页/小程序游戏,聊天室和协同办公软件

http://www.sczhlp.com/news/11617/

相关文章:

  • 新手机膜 25_8_14
  • uniapp 微信小程序上传二进制流文件
  • pyyzDay10
  • Mozilla警告针对附加组件开发者账户的网络钓鱼活动
  • python虚拟环境和包管理工具miniconda详解
  • I2C协议 : 针对面试深挖的随笔
  • Nexa SDK 支持本地运行 Kokoro 等语音模型;AI 猎头智能体 Standout:给 AI 打电话找工作丨日报
  • NOIP2024 T3 题解
  • 【高层次、国际化、连续11届EI检索】第十二届行为与社会计算国际会议(BESC 2025)
  • 基于无人系统的时空感知与智能计算
  • 解码芯安全,天翼云红盾实验室筑牢“芯”防线!
  • c#使用依赖注入
  • 磁盘挂载和Kafka概念和使用场景理解
  • MCP神器!MCP-USE 一键部署连接任何MCP服务器
  • 活动报名:出海增长,从 0 到 1,从 1 到 100、1000 一次性完整分享!丨RTE Meetup
  • 2025最新本土开发者的代码家园:Gitee 平台深度解析
  • MyEMS:用开源智能破解能源管理难题,从车间到园区的全场景实践
  • GospersHack 算法
  • 漏洞挖掘--网络攻击相关网络
  • Doris专题精讲【左扬精讲】—— 学习 Doris:从诞生到应用场景的全方位探索
  • 一个简单题的题解
  • P11989 笔记
  • Rocketmq半消息
  • 前端 html页面中各个元素介绍 head、body
  • Python生成MP3语音文件
  • MyEMS:开源驱动,重塑智能能源管理新范式
  • 软件工厂时代:知识管理系统如何重塑研发新范式?
  • H7-TOOL的250M示波器模组正式上架开卖,200K存储深度,配套的2.30版上位机这几天也将发布(2025-08-14)
  • Template System 进阶:Core / Extra 分离与“钥匙带大门”——把 React 栈的加载时间榨干
  • Playwright基础入门篇 (3) | 交互操作深度解析