1. 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。
2. WebSocket与HTTP的关系
相同点:
- 都是一样基于TCP的,都是可靠性传输协定。
都是应用层协定。
不同点:
- WebSocket是双向通信协定,模仿Socket协定,能够双向发送或承受信息。
- HTTP是单向的。
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_s...
文档链接:https://docs.postcat.com/?utm...
如果你感觉这个开源我的项目还能够的话,无妨点个 star 反对下他们,如果你感觉还须要持续优化,无妨去提个Issue.
Github:https://github.com/Postcatlab...
Gitee:https://gitee.com/eolink_admi...