为什么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适用于实时消息传输(如聊天室,游戏,通知系统)
posted @ 2025-03-20 15:15  X__cicada  阅读(26)  评论(0)    收藏  举报