为什么WebSocket是open/message,而TCP是connect/receive?
| 协议 | 连接事件 | 数据事件 | 关闭事件 | 数据传输方式 |
| TCP | connect | receive | close | 字节流(流式传输,不一定是完整消息) |
| WebSocket | open | message | close | 消息帧(完整的消息) |
核心区别
1.数据流VS消息帧
- TCP传输的是字节流,服务器不能保证receive事件收到的是完整数据,因此需要应用层协议(如HTTP,JSON,自定义协议)进行数据分包和粘包处理。
- WebSocket传输的是消息帧,message事件触发时,服务器收到的是完整的一条消息,无需手动处理粘包/拆包问题。
2.连接方式
- TCP是一个通用传输协议,可以用于HTTP,FTP,SSH等不同应用层协议,它本身不处理消息边界。
- WebSocket是基于TCP之上的应用层协议,自带帧机制,每次message事件触发时,都表示收到了一条完整的消息。
3.用途不同
- TCP适用于低级数据量通信(如RPC,数据库代理)
- WebSocket适用于实时消息传输(如聊天室,游戏,通知系统)

浙公网安备 33010602011771号