Socket.IO is an open-source library for low-latency, bidirectional, event-based communication between a client and a server. Bidirectional means that the server can send a message to the browser at any moment, not only in reply to a request, which chat, live dashboards and collaborative editors need. The main server runs on Node.js, and the main client runs in the browser, Node.js or React Native; the documentation lists other implementations for Java, Python, Go, Rust and more languages.
Both sides send named events with data. Socket.IO opens the connection with WebSocket (a protocol that keeps one TCP connection open in both directions) or WebTransport when possible, and falls back to HTTP long-polling when a proxy or network blocks them. A heartbeat checks the link, the client reconnects automatically, and messages sent while offline are buffered. The server can broadcast to all clients or to a room, also across several servers, and namespaces split one connection into channels. It is not a plain WebSocket implementation: it adds metadata to each packet.
Socket.IO is free and open source under the MIT license.