Integración con Twitch
Twitch es la plataforma más completa en Streamlyra. Utilizamos una combinación de EventSub (Webhooks) para eventos de servidor y TMI (Twitch Messaging Interface) para el chat tradicional, garantizando que no se pierda ninguna interacción.
Arquitectura de la Integración
1. EventSub (Webhooks de Nueva Generación)
A diferencia de los métodos antiguos, usamos los webhooks modernos de Twitch para recibir notificaciones en tiempo real cuando:
- Entra un nuevo mensaje de chat (
channel.chat.message). - Alguien sigue al canal (
channel.follow). - Se recibe una suscripción o regalo (
channel.subscribe). - Comienza un Raid (
channel.raid). - El stream cambia de estado (
stream.online/stream.offline).
2. Sincronización Inteligente (TwitchManager)
El TwitchManager es el encargado de que las suscripciones a eventos estén siempre al día.
- Al arrancar el servidor, realiza una sincronización inicial para verificar que todas las suscripciones en la API de Twitch coincidan con nuestra base de datos local.
- Detecta si la URL del servidor ha cambiado (útil tras un despliegue) y recrea las suscripciones automáticamente.
Seguridad en Twitch
- Secretos Dinámicos: Cada webhook utiliza un secreto único generado aleatoriamente y almacenado de forma encriptada (
AES-256-GCM). - Verificación de Firma: El
WebhookControllervalida el headerTwitch-Eventsub-Message-Signatureen cada petición entrante para asegurar que realmente provenga de Twitch.
Flujo de Mensajes
- Recepción: Twitch envía un POST a
/api/webhooks/twitch. - Validación: Se verifica la firma HMAC.
- Transformación: El
TwitchEventTransformerconvierte el JSON de Twitch al formato estándar de Streamlyra. - Emisión: Se envía a través de Sockets al cliente.