Skip to content

Socket.IO 介绍

提示

当前记录版本 v4

什么是 socket.io

socket.io 是一个库,可以在客户端和服务器之间实现 低延迟, 双向基于事件的 通信。

socket.io 不是什么

注意

socket.io 不是 WebSocket 实现的。

尽管 socket.io 确实在可能的情况下使用 WebSocket 进行传输,但它为每个数据包添加了额外的元数据。这就是为什么 WebSocket 客户端将无法成功连接到 socket.io 服务器,而 socket.io 客户端也将无法连接到普通 WebSocket 服务器。

js
// 警告:客户端将无法连接!
const socket = io("ws://echo.websocket.org");

WebSocket 客户端

socket.io 并不打算在 移动应用程序 的后台服务中使用。

socket.io 库保持与服务器的开放 TCP 连接,这可能会导致用户消耗大量电池。请为此用例使用 FCM 等专用消息传递平台。

为什么要使用 socket.io 而不是普通的 WebSocket ?

websocket 日益成熟,很多地方都支持了 websocket。

如果在应用程序中使用普通的 WebSocket,而在使用的过程中,可能会需要时间一些功能,例如:

  • HTTP 长轮询回退
  • 自动重新连接
  • 数据包缓冲
  • 收到后的回调
  • 广播
  • 多路复用(socket.io 称为 Namespaces 命名空间)

而这些功能正是 socket.io 已经包含的,所以 socket.io 可以形象的理解为:

socket.io = websocket + 轮询 + 自动重新连接 + 广播 + 多路复用 + ...

基于 MIT 许可发布