What is socket.io-adapter?
The socket.io-adapter npm package is designed to be used with Socket.IO, a library that enables real-time, bidirectional and event-based communication between web clients and servers. The adapter is responsible for managing rooms and namespaces, as well as broadcasting and emitting events to a subset of clients. It can be extended to support different backends like Redis, allowing for scaling across multiple processes or servers.
What are socket.io-adapter's main functionalities?
Room Management
This feature allows you to manage rooms, which are arbitrary channels that sockets can join and leave. It enables you to emit events to all clients in a specific room.
const { Server } = require('socket.io');
const io = new Server();
io.on('connection', (socket) => {
socket.join('some room');
io.to('some room').emit('some event');
});
Namespace Management
Namespaces are a way to divide your clients into different endpoints or paths. This feature allows you to manage these namespaces, enabling targeted communication and organization.
const { Server } = require('socket.io');
const io = new Server();
const nsp = io.of('/my-namespace');
nsp.on('connection', (socket) => {
console.log('someone connected to my-namespace');
});
nsp.emit('hi', 'everyone!');
Broadcasting Events
Broadcasting enables you to send a message to all connected clients except for the sender. This is useful for notifying all users about the actions of one.
const { Server } = require('socket.io');
const io = new Server();
io.on('connection', (socket) => {
socket.broadcast.emit('broadcast', 'hello friends!');
});
Other packages similar to socket.io-adapter
socket.io-redis
This package is an adapter for Socket.IO that enables broadcasting of events to multiple servers. It uses Redis as a pub/sub mechanism, allowing for scaling applications by distributing the load across several nodes. Compared to socket.io-adapter, socket.io-redis is specifically designed for use with Redis to support multi-server setups.
socket.io-emitter
Socket.IO Emitter allows you to emit events to Socket.IO servers from non-Socket.IO processes (e.g., a script or a backend service). It's useful for integrating different parts of your system with your real-time components. Unlike socket.io-adapter, which is focused on managing rooms and namespaces within a Socket.IO server, socket.io-emitter is designed for emitting events from outside the Socket.IO server environment.
socket.io-adapter
Default socket.io in-memory adapter class.
Compatibility table:
Adapter version | Socket.IO server version |
---|
1.x.x | 1.x.x / 2.x.x |
2.x.x | 3.x.x |
How to use
This module is not intended for end-user usage, but can be used as an
interface to inherit from other adapters you might want to build.
As an example of an adapter that builds on top of this, please take a look
at socket.io-redis.
License
MIT