Configs2026年4月11日·1 分钟阅读

Socket.IO — Bidirectional Realtime Event-Based Communication

Socket.IO is a library that enables low-latency, bidirectional, event-based communication between a client and server. Built on WebSocket with fallbacks, automatic reconnection, room-based broadcast, and first-class Node.js support.

AI
AI Open Source · Community
快速使用

先拿来用,再决定要不要深挖

这里应该同时让用户和 Agent 知道第一步该复制什么、安装什么、落到哪里。

Server (Node.js):

npm i socket.io
import { Server } from "socket.io";

const io = new Server(3000, { cors: { origin: "*" } });

io.on("connection", (socket) => {
  console.log(`User ${socket.id} connected`);

  socket.on("message", (msg) => {
    io.emit("message", { user: socket.id, text: msg });
  });

  socket.on("join", (room) => {
    socket.join(room);
    io.to(room).emit("joined", socket.id);
  });
});

Client:

npm i socket.io-client
import { io } from "socket.io-client";

const socket = io("http://localhost:3000");
socket.on("message", (m) => console.log(m));
socket.emit("message", "Hello!");
介绍

Socket.IO enables low-latency, bidirectional, event-based communication between client and server. Built on top of WebSocket with automatic fallback to HTTP long-polling for legacy environments. Features that raw WebSocket lacks: automatic reconnection, rooms/namespaces, broadcast, acknowledgments.

What Socket.IO Does

  • Events — emit/on with any JSON payload
  • Acknowledgments — callback-style confirmations
  • Rooms — group sockets for targeted broadcasts
  • Namespaces — logical channels over same connection
  • Auto-reconnect — exponential backoff
  • Binary data — Buffers/Blobs supported
  • Horizontal scaling — Redis adapter for multi-node
  • Middleware — auth, logging, rate limiting

Architecture

The Engine.IO layer handles transport (WebSocket preferred, polling fallback, upgrade mechanism). Socket.IO adds protocol features (rooms, acks, binary, namespaces). Multi-server deploys use a Redis (or other) adapter to broadcast across nodes.

Self-Hosting

# Standalone Node server
node server.js

# With Express
import express from "express";
import { Server } from "socket.io";
import http from "http";

const app = express();
const httpServer = http.createServer(app);
const io = new Server(httpServer);
httpServer.listen(3000);

Key Features

  • WebSocket + HTTP long-polling fallback
  • Automatic reconnection
  • Rooms and namespaces
  • Acknowledgments (callback-style)
  • Binary data support
  • Horizontal scaling via adapters
  • Middleware for auth
  • Admin UI dashboard
  • Multiple language clients (JS, Python, Java, Swift, Kotlin, C++)

Comparison

Library Transport Fallback Rooms Scaling
Socket.IO WebSocket + HTTP Yes Built-in Redis adapter
ws WebSocket No DIY DIY
SockJS WebSocket + 8 fallbacks Yes No DIY
Centrifugo WebSocket No Built-in Built-in
Ably/Pusher WebSocket Yes Built-in Managed SaaS

常见问题 FAQ

Q: 和原生 WebSocket 比? A: 原生 WebSocket 更轻,但需要自己实现重连、心跳、rooms。Socket.IO 开箱即用。

Q: 怎么水平扩展? A: 用 @socket.io/redis-adapter。多个 Node 进程共享 Redis pub/sub 广播。

Q: 协议兼容吗? A: 客户端和服务端版本需兼容(v4 客户端不能连 v2 服务端)。官方有版本对照表。

来源与致谢 Sources

讨论

登录后参与讨论。
还没有评论,来写第一条吧。

相关资产