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。

WebSocket与 HTTP 的关系

相同点:

  • 都是一样基于TCP的,都是可靠性传输协定。
  • 都是应用层协定。

不同点:

  1. WebSocket是双向通信协定,模仿Socket协定,能够双向发送或承受信息。
  2. HTTP是单向的。
  3. WebSocket是须要握手进行建设连贯的。

分割: WebSocket在建设握手时,数据是通过HTTP传输的。然而建设之后,在真正传输时候是不须要HTTP协定的。

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 管理工具——Eoapi

在线 Demo 链接:
https://www.eoapi.io/?utm_sou...

文档链接:
https://docs.eoapi.io/?utm_so...

如果你感觉这个开源我的项目还能够的话,无妨点个 star 反对下他们,如果你感觉还须要持续优化,无妨去提个Issue.

Github:https://github.com/eolinker/e...

Gitee:https://gitee.com/eolink_admi...