A.AppInitDevAcademy / Luna Virtual
Capítulo 10 / 13 · Integración

TikFinity y eventos reales

Conecta el WebSocket local, detecta comentarios y regalos, y diagnostica eventos ausentes.

1. Instala TikFinity Desktop y verifica el endpoint

TikFinity abierto con botón de conectar a TikTok LIVE y usuario desconectado.
En tu captura TikFinity muestra el botón «Conectar a TikTok LIVE» y el estado Disconnected. Esto significa que la conexión real al LIVE no está activa en esa pantalla.Descargar captura original PNG ↗Descargar versión optimizada WebP ↗

Aunque TikFinity Desktop esté instalado, el botón de conexión debe completar el vínculo con un LIVE activo y autorizado. El puente Node conecta con el servicio WebSocket local, pero eso no confirma que estén llegando eventos de espectadores.

  1. Abre TikFinity Desktop en la misma PC que el puente Node.
  2. Inicia un LIVE autorizado desde LIVE Studio, si tu cuenta y configuración lo permiten.
  3. Vuelve a TikFinity y pulsa Conectar a TikTok LIVE.
  4. Comprueba que desaparezca el estado de desconexión.
  5. Deja TikFinity Desktop abierto mientras Node se conecta a ws://127.0.0.1:21213/.
  6. Cuando llegue un comentario de prueba desde un usuario real, revisa la consola Node.

2. Configura el conector WebSocket en Node

Configuración de eventos observada
"events": {
  "enabled": true,
  "websocketUrl": "ws://127.0.0.1:21213/",
  "reconnectDelayMs": 5000,
  "logRawEvents": false
}

Tu archivo src/eventos.mjs usa el WebSocket integrado en Node 22.4+, normaliza eventos JSON y reconecta cuando se cierra la sesión. Para un diagnóstico temporal puedes establecer logRawEvents: true y volverlo a false después.

Iniciar puente en modo LIVE
cd C:\StreamerVirtualTikTok
npm start

Busca una línea como [EVENTOS] WebSocket conectado: ws://127.0.0.1:21213/. Después espera un evento válido; si no aparece, aún no sabes si la conexión al LIVE real funciona.

Archivo src/eventos.mjsNormalización y reconexión.
Descargar ↘

3. Diferencia evento, acción y respuesta

Evento TikFinityAcción de LunaGrafo VNyan
chatResponde si cumple activadores y cooldownOpcional (hablar/callar).
giftAgradece regalos detectadosLunaRegalo
followSaluda al nuevo seguidorLunaSeguidor
shareAgradece compartirLunaComparte
subscribeAgradece suscripciónLunaSuscripcion
member / joinSaluda si llega evento y se cumple cooldownLunaSaluda
like / roomUserNo procesados por el normalizador actualNinguno

El normalizador incluido admite {"event":"chat","data":{...}} y variantes de nombres para comentarios, usuarios y regalos. Los datos recibidos pueden diferir según la versión del proveedor; revisa la documentación y la carga real antes de modificar el parser.

4. Qué hacer cuando conectas pero no recibes nada

  1. Comprueba si realmente hay un LIVE activo: un botón «Conectar» visible no prueba que la sesión esté conectada.
  2. Confirma que TikFinity Desktop se esté ejecutando en la misma computadora y que el WebSocket local responde.
  3. Verifica que Node registre el WebSocket abierto; si falla, revisa puerto 21213 y restricciones locales.
  4. Envía un comentario de prueba desde una cuenta de espectador real (nunca fabriques vistas o regalos).
  5. Activa temporalmente logRawEvents para ver si llega algún mensaje; evita divulgar nombres y datos personales.
  6. Comprueba que el texto contenga luna, @luna o ? si quieres una respuesta, porque respondToAllChat está desactivado.
  7. Comprueba los tiempos de enfriamiento: chatCooldownMs=13000 y perUserCooldownMs=60000 en tu configuración.
  8. Si llega JSON con nombres distintos, ajusta el normalizador de src/eventos.mjs tras inspeccionarlo.

5. Documentación y buenas prácticas

Documentación Event API de TikFinityEndpoint local y ejemplos de eventos JSON.
Sitio oficial ↗
TikFinity: acciones y eventosCondiciones de conexión y configuración de overlays.
Sitio oficial ↗

No ejecutes dos TTS simultáneos (TikFinity TTS y Piper para el mismo comentario), porque producirían audio duplicado. No necesitas la capa de acciones de TikFinity si todo el control se hace desde Node y VNyan.

Captura ampliada