Integración de Plataformas
Streamlyra está diseñado para ser extensible. Cada plataforma de streaming (Twitch, YouTube, Kick, etc.) se integra mediante un conjunto de servicios especializados que manejan la autenticación, la obtención de datos y la mensajería en tiempo real.
Conceptos Clave
Para añadir o gestionar una plataforma, intervenimos principalmente en dos áreas:
1. Servicios de Plataforma (/services/platforms)
Estos servicios actúan como clientes de las APIs oficiales. Se encargan de:
- Realizar peticiones HTTP a los endpoints de la plataforma.
- Gestionar cuotas (especialmente importante en YouTube con
YouTubeQuotaManager). - Manejar eventos específicos del servidor (como Webhooks de Twitch vía
TwitchEventSubClient).
2. Proveedores de Chat (/services/chat)
Cada plataforma tiene su propia implementación de un ChatProvider. Esta capa normaliza la comunicación en tiempo real:
- Conexión: Maneja el ciclo de vida de la conexión (IRC para Twitch, Polling para YouTube, Sockets para Kick, Connector para TikTok).
- Estado Detallado: Implementan
getStatus()para informar si el sistema está buscando (searching), esperando (waiting_stream) o conectado con éxito. - Normalización: Convierte los mensajes crudos de cada plataforma a un formato estándar de Streamlyra.
- Acciones: Permite enviar mensajes o realizar moderación de forma uniforme.
Flujo de Autenticación
Streamlyra utiliza OAuth2 para la mayoría de las plataformas. El flujo general es:
- El usuario inicia el login desde el cliente.
- El servidor redirige a la plataforma (Twitch/YouTube).
- Tras la autorización, el
AuthFlowProcessorrecibe el código, obtiene los tokens y los persiste en la base de datos de forma encriptada. - Se asocia la
Connectional usuario y se activa automáticamente elChatProvidercorrespondiente.
Resumen de Plataformas Soportadas
| Plataforma | Método de Chat | Características |
|---|---|---|
| Twitch | IRC / EventSub | Soporta chat, alertas de seguimiento, suscripciones y raids. |
| YouTube | Live Streaming API | Gestión de cuotas integrada y polling optimizado para el chat en vivo. |
| Kick | Pusher (Websockets) | Conexión en tiempo real basada en eventos de socket. |
| TikTok | HTTP Polling | Soporte básico para lectura de eventos de chat. |
Cómo añadir una nueva plataforma
- Definir la constante en
src/constants/platforms.ts. - Crear un servicio en
src/services/platformspara las llamadas a la API. - Implementar un
ChatProviderensrc/services/chat. - Registrar el nuevo proveedor en el
ChatManagerdentro desrc/services/container.ts.