WebSocket主要用于实现服务器与浏览器之间的实时双向通信。
1. 技术定义与特性
-
基本定义:WebSocket 是基于 TCP 的一种新的网络协议。
-
全双工通信:它实现了浏览器与服务器的全双工通信,即两者只需完成一次握手,就能创建持久性的连接,并进行双向数据传输。
-
与 HTTP 的区别:
- 连接性质:HTTP 是短连接;WebSocket 是长连接。
- 通信模式:HTTP 是单向的,基于“请求-响应”模式;WebSocket 支持双向通信,服务器可以主动向客户端推送数据。
- 底层基础:两者底层都是基于 TCP 连接。
2. 为什么不直接取代 HTTP?
尽管 WebSocket 功能强大,但它并不能完全取代 HTTP,原因包括:
- 成本问题:服务器长期维护大量长连接需要较高的成本。
- 兼容性:不同浏览器对 WebSocket 的支持程度不一。
- 稳定性:长连接受网络限制较大,需要处理复杂的重连逻辑。
3. 项目中的应用场景
在“苍穹外卖”项目中,WebSocket 主要用于解决服务器主动通知商家的业务需求:
- 来单提醒:当用户下单并支付成功后,服务端通过 WebSocket 向管理端推送消息,触发语音播报和弹出提示框。
- 客户催单:用户在小程序点击“催单”按钮时,服务端会即时向商家发送催单提醒。
- 数据格式约定:服务端发送给客户端的消息采用 JSON 格式,包含
type(1 为来单提醒,2 为客户催单)、orderId(订单 ID)和content(消息内容)。
4. 常见应用领域
除了外卖系统的提醒功能,WebSocket 还广泛应用于:
- 视频弹幕:实时展示用户发布的评论。
- 网页聊天:实现即时通讯功能。
- 实时更新:如体育实况比分、股票基金报价的实时变动。
类比理解: HTTP 通信就像发邮件:你发一封信(请求),对方回一封信(响应),如果你不发信,对方没法主动找你。 WebSocket 通信就像打通了电话:一旦通话建立(握手成功),线路就一直连着,任何一方看到新情况都可以随时开口告诉对方,不需要等待对方先提问。