Transportes — un contrato, tres caminos
El evento JSON es idéntico en los tres transportes. El manifest declara cuál usa tu app
(transport). El SDK elige el correcto por ti.
1. local-ws — WebSocket local (web, GTA V, escritorio)
ws://127.0.0.1:8767/events/v1?app=<appId>
- El servidor es el agente local del streamer.
- Handshake: el primer mensaje del servidor es
init; luego el stream de eventos declarados en el manifest.ping/pongcada 30 s. - Permisos: la primera conexión de un
appIddesconocido dispara un prompt en el agente ("Este juego quiere recibir: chat, gifts, joins — ¿Permitir?"), con opción de recordar. - Cliente de referencia:
@tikxander/live-events(conectar, reconectar con backoff, deduplicar porid,on('chat', cb)).
2. local-poll — HTTP long-poll local (GTA San Andreas y engines viejos)
Para entornos sin WebSocket viable (scripts CLEO/Lua):
GET http://127.0.0.1:8767/events/v1/poll?app=<appId>&cursor=<c>&wait=25
→ 200 { "cursor": "c124", "events": [ {…}, {…} ] }
cursoropaco; la primera llamada sin cursor devuelveinit+ el cursor actual.wait: long-poll hasta N segundos (máx 25); responde antes si hay eventos.- Buffer de ~60 s por app: una ráfaga de gifts no se pierde entre polls.
- Sirve para cualquier lenguaje con HTTP;
curlbasta para probar.
3. cloud-relay — HTTPS polling cloud (Roblox, obligatorio)
Los juegos Roblox corren en servidores de Roblox y no ven el 127.0.0.1 del streamer. Su camino
es un relay en agent-controller:
GET https://agentcontroller.tikxander.com/relay/v1/events?cursor=<c>
Authorization: Bearer <relay-token del streamer para esa app>
→ 200 { "cursor": "c88", "events": [ {…} ] }
- El
relay-tokense genera en la ficha del juego (por streamer + app, revocable) y el streamer lo pega en la config de su experiencia Roblox. - Cola FIFO consumida por HttpService, con cursor + buffer corto.
Matriz plataforma → transporte
| Plataforma | Transporte | SDK | Por qué |
|---|---|---|---|
| Juego web (HTML) | local-ws | @tikxander/live-events (npm) | Corre en el browser/OBS, localhost OK. |
| Mod GTA V | local-ws | SDK C# (ScriptHookVDotNet) | .NET tiene WebSocket nativo. |
| Mod GTA SA | local-poll | helper CLEO/Lua | Sin WebSocket viable. |
| Roblox | cloud-relay | ModuleScript Lua | Los servers de Roblox no ven localhost. |
| Otro (Python, Unity…) | local-ws o local-poll | protocolo crudo | Cualquier lenguaje con HTTP se integra. |
Simulador
El panel de simulación (en este portal y en la pestaña Desarrollador del agente) inyecta eventos
falsos en el MISMO canal: tu juego no distingue (salvo el campo opcional sim: true). Presets:
chat suelto, gift x1, streak de gifts, ráfaga de joins, live start/end, caos aleatorio N
eventos/s.