WebSocket 原理
WebSocket 同 HTTP 一样也是应用层的协定,然而它是一种双向通信协定,是建设在 TCP 之上的。
WebSocket 是一种在单个 TCP 连贯上进行全双工通信的协定。WebSocket API 也被 W3C 定为规范。
WebSocket 使得客户端和服务器之间的数据交换变得更加简略,容许服务端被动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只须要实现一次握手,两者之间就间接能够创立持久性的连贯,并进行双向数据传输。
握手过程:
- 浏览器、服务器建设 TCP 连贯,三次握手。这是通信的根底,传输管制层,若失败后续都不执行。
- TCP 连贯胜利后,浏览器通过 HTTP 协定向服务器传送 WebSocket 反对的版本号等信息。(开始前的 HTTP 握手)
- 服务器收到客户端的握手申请后,同样采纳 HTTP 协定回馈数据。
-
当收到了连贯胜利的音讯后,通过 TCP 通道进行传输通信。
Websocket 默认应用申请协定为:ws://, 默认端口:80。对 TLS 加密申请协定为:wss://,端口:443。
WebSocket 与 HTTP 的关系
相同点:
- 都是一样基于 TCP 的,都是可靠性传输协定。
- 都是应用层协定。
不同点:
- WebSocket 是双向通信协定,模仿 Socket 协定,能够双向发送或承受信息。
- HTTP 是单向的。
- 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…