📋 Descripción
Añadir funcionalidad de canales/rooms para permitir agrupación de usuarios y comunicación dirigida a grupos específicos, manteniendo la filosofía de simplicidad y agnosticismo de Pasarela.
🎯 Objetivo
Permitir que los usuarios se unan a "rooms" o canales específicos y recibir mensajes solo de esos canales, sin afectar la comunicación global existente.
💡 Casos de Uso
- Chats grupales: Usuarios en una sala de chat específica
- Partidas de juego: Jugadores en la misma partida
- Proyectos colaborativos: Equipos trabajando en el mismo proyecto
- Streaming en vivo: Audiencia de un streamer específico
- Soporte técnico: Conversaciones por ticket/caso
- Eventos: Asistentes a un evento específico
🔧 Propuesta de API
Nuevos Eventos
// Unirse a un room
socket.emit('unirse_room', 'room-id', callback);
// Salir de un room
socket.emit('salir_room', 'room-id', callback);
// Listar rooms del usuario
socket.emit('listar_rooms', callback);
// Enviar mensaje a un room específico
socket.emit('pasarela', {
destino: 'room',
room: 'room-id',
data: { mensaje: 'Hola room!' }
});
Compatibilidad con API Actual
La API actual debe seguir funcionando:
destino: 'nosotros' → Todos los usuarios conectados
destino: 'ustedes' → Todos menos el emisor
destino: 'yo' → Solo el emisor
destino: 'room' → Solo usuarios en el room especificado (NUEVO)
🏗️ Consideraciones Técnicas
Escalabilidad
- Los rooms deben funcionar correctamente con múltiples instancias de Pasarela
- Usar Redis Adapter para sincronizar rooms entre instancias
- Considerar límites de rooms por usuario si es necesario
Persistencia
- Los rooms pueden ser temporales (solo mientras hay usuarios) o persistentes
- Considerar si necesitamos persistir metadata de rooms (nombre, descripción, etc.)
Seguridad
- ¿Permitir rooms públicos o privados?
- ¿Necesitamos autenticación/autorización para unirse a rooms?
- ¿Límites de usuarios por room?
Métricas
- Añadir métricas de Prometheus para:
- Número de rooms activos
- Usuarios por room
- Mensajes por room
📝 Notas de Diseño
- Mantener la simplicidad: rooms son solo identificadores de strings
- No imponer lógica de negocio: los proyectos definen qué es un "room"
- Compatibilidad hacia atrás: la API actual debe seguir funcionando
- Agnóstico: un room puede ser cualquier identificador (chat-id, game-id, project-id, etc.)
🔗 Relacionado
Esta funcionalidad complementaría perfectamente ejemplos como:
- Chat en tiempo real (rooms = salas de chat)
- Sistema de cola de turnos (rooms = tipos de servicio)
- Booking de eventos (rooms = eventos específicos)
📌 Etiquetas Sugeridas
enhancement feature v3.0
📋 Descripción
Añadir funcionalidad de canales/rooms para permitir agrupación de usuarios y comunicación dirigida a grupos específicos, manteniendo la filosofía de simplicidad y agnosticismo de Pasarela.
🎯 Objetivo
Permitir que los usuarios se unan a "rooms" o canales específicos y recibir mensajes solo de esos canales, sin afectar la comunicación global existente.
💡 Casos de Uso
🔧 Propuesta de API
Nuevos Eventos
Compatibilidad con API Actual
La API actual debe seguir funcionando:
destino: 'nosotros'→ Todos los usuarios conectadosdestino: 'ustedes'→ Todos menos el emisordestino: 'yo'→ Solo el emisordestino: 'room'→ Solo usuarios en el room especificado (NUEVO)🏗️ Consideraciones Técnicas
Escalabilidad
Persistencia
Seguridad
Métricas
📝 Notas de Diseño
🔗 Relacionado
Esta funcionalidad complementaría perfectamente ejemplos como:
📌 Etiquetas Sugeridas
enhancementfeaturev3.0