Las "rooms" en Socket.IO son una funcionalidad que permite agrupar conexiones de sockets para enviar y recibir mensajes a un conjunto específico de clientes. Esto facilita la creación de funcionalidades como chats grupales, notificaciones segmentadas o juegos multijugador en tiempo real.
Socket.IO permite a cada cliente conectarse a una o más "rooms" (habitaciones), las cuales son básicamente etiquetas que organizan a los clientes en grupos. Una vez que un socket está en una room, el servidor puede emitir mensajes a todos los miembros de esa habitación sin afectar a otros clientes fuera de ese grupo. Es importante destacar que cada socket automáticamente pertenece a su propio "room" exclusivo, identificado por su ID.
Para usar rooms en Socket.IO, se pueden utilizar métodos como .join()
y .leave()
en el lado del servidor. Los siguientes ejemplos muestran cómo implementarlos:
io.on('connection', (socket) => {
// Unir un socket a una room llamada 'sala1'
socket.join('sala1');
// Emitir un mensaje a todos los sockets en 'sala1'
io.to('sala1').emit('mensaje', 'Bienvenidos a la sala 1');
// Salir de la room 'sala1'
socket.leave('sala1');
});
io.to('sala1').to('sala2').emit('mensaje', 'Mensaje para sala1 y sala2');
socket.broadcast.to('sala1').emit('mensaje', 'Nuevo usuario se ha unido a la sala 1');
Para más información, visita la documentación de Socket.IO sobre rooms y namespaces.
Jorge García
Fullstack developer