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

弄懂 Websocket 你得知道的这 3 点

1. WebSocket原理

WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket API也被W3C定为标准。

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手, 两者之间就直接可以创建持久性的连接,并进行双向数据传输。

握手过程:

  1. 浏览器、服务器建立TCP连接,三次握手。这是通信的基础,传输控制层,若失败后续都不执行。

  2. TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息。(开始前的HTTP握手)

  3. 服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。

  4. 当收到了连接成功的消息后,通过TCP通道进行传输通信。

Websocket默认使用请求协议为:ws://,默认端口:80。对TLS加密请求协议为:wss://,端口:443。

2. WebSocket与HTTP的关系

相同点

  1. 都是一样基于TCP的,都是可靠性传输协议。

  2. 都是应用层协议。

不同点:

  1. WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。

  2. HTTP是单向的。

  3. WebSocket是需要握手进行建立连接的。

联系: WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。

3. WebSocket与Socket的关系

Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。tcp是可靠的连接,且连接后才可以发送数据;udp是不可靠的连接,不连接就可以发送数。

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。

WebSocket则是一个典型的应用层协议,Socket是传输控制层协议。

如果你在日常工作中需要进行 Websocket 协议测试,但又不知道使用什么工具,那我推荐你用这一款开源的 API 管理工具——Postcat

 

在线 Demo 链接:https://postcat.com/zh/?utm_source=cs&utm_campaign=xh&utm_content=pd2512

文档链接:https://docs.postcat.com/?utm_source=cs&utm_campaign=xh&utm_content=pd2512

如果你觉得这个开源项目还可以的话,不妨点个 star 支持下他们,如果你觉得还需要继续优化,不妨去提个Issue.

Github:https://github.com/Postcatlab/postcat

Gitee:https://gitee.com/eolink_admin/postcat

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

相关文章:

  • Appium构架及工作原理
  • 软件架构中“弹性”的多种含义
  • JAVA练习57- 罗马数字转整数、位1的个数
  • C#把图片放到picturebox上的指定位置,PointToClient与PointToScreen解读
  • 【论文笔记】Manhattan-SDF==ZJU==CVPR‘2022 Oral
  • 环翠区中小学生编程挑战赛题解中学组T4:免费超市
  • 关于Oracle树形查询(connect by)的学习笔记
  • 观看课程领奖品!Imagination中国区技术总监全面解读 IMG DXT GPU
  • To_Heart—题解——[SCOI2012]奇怪的游戏
  • Spring Boot Hello World 基于 IDEA 案例详解
  • 基于机器学习的异常检测与分析技术
  • pytest进阶之html测试报告
  • 劳特巴赫仿真测试工具Trace32的基本使用(cmm文件)
  • 盘点四种自动化测试模型实例及优缺点
  • 【论文阅读】SCRFD: Sample and Computation 重分配的高效人脸检测
  • Debezium报错处理系列之四十七:Read only connection requires GTID_MODE to be ON
  • 关于float(b)类型数据类型的精度的学习
  • 哪种类型的网络安全风险需要进行渗透测试?
  • ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境
  • Vue3后台管理系统(四)SVG图标
  • 【收集】2023年顶会accepted papers list(NeurIPS/CVPR/ICML/ICLR/ECCV/AAAI/IJCAI/WWW...)
  • 空闲态LTE到NR重选优先级介绍
  • 数据结构与算法:Map和Set的使用
  • C语言——动态内存管理
  • Docker安装Grafana
  • 数据结构(四):树、二叉树、二叉搜索树
  • 040、动态规划基本技巧(labuladong)
  • html笔记(一)
  • 索引的情况
  • Verilog 学习第五节(串口发送部分)