WebSocket协议
WebSocket协议是一种网络通信协议,它在2011年被互联网工程任务组(IETF)标准化为RFC 6455。WebSocket允许在单个TCP连接上进行全双工通信,这意味着客户端和服务器可以同时发送和接收数据,实现真正的双向通信。
WebSocket的主要特点包括:
- 全双工通信:服务器和客户端可以同时发送数据,不需要等待对方的响应。
- 持久连接:一旦建立,WebSocket连接会一直保持,直到客户端或服务器关闭连接。
- 低延迟:由于减少了HTTP请求和响应的开销,WebSocket通常具有较低的通信延迟。
- 基于HTTP:WebSocket握手过程基于HTTP,使用
Upgrade
请求头从HTTP协议升级到WebSocket协议。 - 安全性:支持通过
wss://
(WebSocket Secure)使用TLS/SSL加密连接,类似于HTTPS。 - 端口使用:默认情况下,WebSocket协议使用80端口,而加密的WebSocket(WSS)使用443端口。
WebSocket的握手过程:
- 客户端请求:客户端通过HTTP发送一个带有
Upgrade: websocket
头的请求,表明它希望将连接升级到WebSocket协议。 - 服务端响应:如果服务器同意升级,它会响应一个带有
101 Switching Protocols
状态码的HTTP响应,同时包含Upgrade: websocket
和Connection: Upgrade
头。 - 连接建立:握手成功后,HTTP连接升级为WebSocket连接,客户端和服务器之间可以开始全双工通信。
WebSocket的应用场景:
- 实时应用:如在线游戏、实时数据推送、股票交易等。
- 消息系统:即时通讯和聊天应用,如WhatsApp和Facebook Messenger。
- 协作工具:允许多人实时编辑文档或进行协作的应用程序。
WebSocket与HTTP的区别:
- HTTP:基于请求-响应模式,每次通信需要建立和关闭连接,不适合实时通信。
- WebSocket:提供了全双工通信,允许服务器主动发送信息给客户端,适合需要实时数据传输的场景。
WebSocket的API:
- 构造函数:
new WebSocket(url, protocols)
,其中url
是WebSocket服务器的地址,protocols
是可选的,用于指定子协议。 - 属性:包括
readyState
、bufferedAmount
、extensions
、protocol
等。 - 事件:包括
open
、message
、error
、close
等。 - 方法:
send
用于发送消息,close
用于关闭连接。
安全性:
WebSocket协议本身不支持加密,但是通过wss://
(WebSocket Secure)可以使用TLS加密,确保数据传输的安全性。
兼容性:
现代主流浏览器都支持WebSocket协议,允许开发者在大多数项目中使用它。
参考资料:
Do not communicate by sharing memory; instead, share memory by communicating.