socketio/socket.io
Bidirectional and low-latency communication for every platform
How socket.io is put together
This is the Socket.IO monorepo, a TypeScript/Node.js realtime bidirectional communication framework published as multiple npm packages via npm workspaces. It is layered: engine.io provides the low-level connection engine (polling, WebSocket, WebTransport transports), socket.io builds namespaces/rooms/broadcast semantics on top, and socket.io-client/engine.io-client provide browser and Node clients. Cross-node scaling is handled by adapters and emitters backed by Redis Streams and PostgreSQL. Data flows from client transports through the engine.io-parser/socket.io-parser codecs into server-side namespace event dispatch.
Languages
Frameworks
Datastores
Infrastructure
Major components
packages/engine.io
Server-side realtime engine handling connection lifecycle, handshake, cookie/session IDs, and polling/WebSocket/WebTransport/uWS transports.
packages/engine.io-client
Client library implementing transports (XHR/fetch polling, WebSocket, WebTransport), reconnection, and URI parsing for Node and browsers.
packages/engine.io-parser
Encodes/decodes engine-level packets including binary payloads, with separate browser and Node implementations.
packages/socket.io
Main server package providing namespaces, rooms, sockets, broadcast operators, parent namespaces, and uWS integration.
packages/socket.io-client
Client library with Manager (connection/reconnection/backoff via backo2), URL resolution, and socket event multiplexing.
packages/socket.io-parser
Application-level packet codec supporting binary attachment extraction (is-binary.ts) and typed events.
packages/socket.io-adapter / cluster-adapter
In-memory room-tracking adapter plus a Redis-backed cluster adapter for broadcasting across nodes.
emitter packages (postgres-emitter, redis-streams-emitter, cluster-engine)
Allow non-socket.io processes to emit events to connected clients via PostgreSQL or Redis Streams, and provide a clustered engine transport.
Two engine-level updates landed: restoring support for older Node.js and speeding up compressed polling responses.
This week's work on the Socket.IO repository focused on the underlying engine (engine.io), with two targeted improvements. The team fixed a compatibility issue so the library works again with an older version of Node.js, and made compressed responses over long-polling connections stream more efficiently for better performance.
Fix
Restored compatibility with Node.js 10
A change had accidentally broken support for Node.js 10, and this fix makes the library work with that older version again.
Refactor
Streamed compressed polling responses
Compressed responses sent via polling are now streamed instead of being fully assembled first, which improves performance.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 1145 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required