为什么很多不用websocket

2025-04-2110:14:39百科知识0

WebSocket 是一种在单个 TCP 连接上进行全双工通信的应用层协议。它通过在 OSI 模型的应用层与 TCP 协议层之间建立连接,弥补了 HTTP 协议在持久通信能力上的不足。WebSocket 允许服务器主动向客户端推送数据,并简化了客户端和服务器之间的数据交换过程。

简单来说,WebSocket 就是服务器和客户端之间相互主动传输信息的约定协议。

握手是通信双方建立连接前的必要步骤。

关键特性

确保 WebSocket 和 HTTP 基础设备的兼容性,因为它们都可以运行在常见的 80 端口或 443 端口。

利用了 HTTP 的 Upgrade 机制,简化了协议升级过程,使通信双方能够快速而可靠地建立 WebSocket 连接。

技术细节

WebSocket 的数据传输以帧为单位。每个消息可能会被切分成多个数据帧发送给接收端,接收端收到数据帧后,会根据帧的 FIN 字段值和 Opcode 来判断是否收到完整的消息和数据类型。

数据帧格式

数据帧的格式从左到右包括以下字段:FIN、RSV1、RSV2、RSV3、Mask、Payload length、Masking-key 和 Payload data。其中,FIN 表示是否为消息的最后一帧,Mask 表示是否对数据进行掩码操作,Payload length 表示负载数据的长度,Masking-key 是用于数据掩码操作的密钥,Payload data 则为实际的数据负载。

连接维持与断线重连

为了保持 WebSocket 连接的活跃性和稳定性,通常采用心跳检测机制。客户端会定期发送心跳包给服务器,服务器在收到心跳包后回应一个确认包。如果长时间未收到对方的响应,则认为连接已断开,并采取相应的断线重连策略。

断线重连策略

当检测到连接断开时,客户端应通过 onclose 事件来关闭连接。

服务端宕机或出现异常时,客户端应通过重连方案来恢复连接。

为了避免频繁重连造成的服务器压力,可以采取指数退避策略来控制重连尝试的频率。

其他相关技术

除了 WebSocket,网络通信中还涉及到 Socket 技术。Socket 是对 TCP/IP 协议栈的封装,提供了底层通信的实现。而长轮询则是基于 HTTP 协议的一种技术,用于实现服务器与客户端之间的长连接和实时数据交换。

WebSocket、Socket 和长轮询等技术共同构成了现代网络通信的重要基础。