Volver a la página principal
lunes 30 septiembre 2024
9

Qué son las rooms en SocketIO

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.

Concepto de Rooms en Socket.IO

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.

Características principales:

  • Creación dinámica: Las rooms se crean y se destruyen automáticamente en función de los sockets que se unen o salen de ellas.
  • Unión y salida: Los clientes pueden unirse y salir de múltiples rooms simultáneamente.
  • Emisión de eventos: Los eventos enviados a una room llegan solo a los sockets conectados a esa room.

Cómo utilizar rooms en Socket.IO

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:

Ejemplo básico:

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');
});

Envío a múltiples rooms

io.to('sala1').to('sala2').emit('mensaje', 'Mensaje para sala1 y sala2');

Broadcast a todos menos a un socket específico:

socket.broadcast.to('sala1').emit('mensaje', 'Nuevo usuario se ha unido a la sala 1');

Referencia oficial

Para más información, visita la documentación de Socket.IO sobre rooms y namespaces.

Etiquetas:
javascript
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer