Cómo funciona el WebSocket de TikTok LIVE
TikTool ofrece un endpoint WebSocket gestionado en wss://api.tik.tools que transmite eventos en tiempo real de cualquier transmisión de TikTok LIVE. Te conectas con tu API key y un usuario de TikTok, y el servidor se encarga de toda la negociación del protocolo, la autenticación y la lógica de reconexión.
A diferencia de las conexiones directas al protocolo de la infraestructura de transmisión de TikTok (que se rompen con frecuencia), la API WebSocket de TikTool es un relay estable y listo para producción.
Inicio rápido - Conéctate en 3 líneas
JavaScript / Node.js
import { TikTokLive } from '@tiktool/live'
const client = new TikTokLive({ uniqueId: 'streamer_username', apiKey: 'YOUR_KEY' })
client.on('chat', e => console.log(`${e.user.uniqueId}: ${e.comment}`))
client.connect()O conéctate directamente con WebSocket nativo (sin SDK):
const ws = new WebSocket('wss://api.tik.tools?uniqueId=USERNAME&apiKey=YOUR_KEY')
ws.onmessage = (msg) => {
const event = JSON.parse(msg.data)
console.log(event.event, event.data)
}Python
import asyncio, websockets, json
async def connect():
uri = "wss://api.tik.tools?uniqueId=USERNAME&apiKey=YOUR_KEY"
async with websockets.connect(uri) as ws:
async for message in ws:
event = json.loads(message)
print(event["event"], event.get("data", {}))Cualquier lenguaje
Funciona cualquier lenguaje con soporte de WebSocket: Go, Rust, Java, C#, Ruby, PHP. Solo conéctate a:
wss://api.tik.tools?uniqueId=TIKTOK_USERNAME&apiKey=YOUR_API_KEYParámetros de conexión del WebSocket
uniqueId✓Usuario de TikTok (sin @) del streamerapiKey✓Tu API key de TikTooljwtKeyAutenticación con JWT (alternativa a apiKey para clientes de navegador con token)Tipos de eventos
Cada mensaje del WebSocket es un objeto JSON con los campos event y data. Estos son los eventos que recibirás:
chatNuevo mensaje de chat de un espectador. Incluye info del usuario, texto del mensaje e insignias.
giftRegalo virtual enviado por un espectador. Incluye nombre del regalo, valor en diamantes y número de repeticiones.
likeUn espectador le dio like a la transmisión. Incluye el total de likes.
memberUn espectador entró a la transmisión. Se dispara cuando los usuarios entran a la sala LIVE.
socialFollow / compartir / favorito. El campo data.action indica cuál (follow, share, favourite).
roomUserSeqActualización del número de espectadores. Incluye viewerCount actual y topViewers.
subscribeUn espectador se suscribió al streamer.
battleEvento de batalla LinkMic. Incluye estado de la batalla, puntuaciones, duración y participantes.
battleArmiesActualización de equipos de la batalla. Puntuaciones por equipo y clasificación de participantes.
linkMicActualización del diseño de invitados de LinkMic. Incluye los IDs de usuario de cada espacio/invitado en transmisiones con varios anfitriones.
roomPinEl streamer fijó un mensaje del chat.
liveIntroActualización de la presentación de la transmisión. Incluye título y descripción.
emoteChatEmote personalizado enviado en el chat. Incluye el ID del emote y la URL de la imagen.
envelopeEvento de cofre del tesoro / sobre rojo en la transmisión.
questionPregunta de preguntas y respuestas enviada por un espectador.
rankUpdateActualización de la posición del streamer por región.
barrageMensaje de anuncio/barrage en la parte superior de la pantalla.
superFanUn espectador se convirtió en Super Fan o subió de nivel. Incluye el nuevo nivel.
superFanJoinUn Super Fan entró a la sala.
superFanBoxEvento de caja / recompensa de Super Fan.
controlControl del ciclo de vida de la transmisión (pausa, fin, etc.).
Límites de conexión por plan
Manejo de errores y reconexión
El WebSocket se cierra con códigos de cierre estándar. Tu cliente debe encargarse de reconectar:
// Auto-reconnect pattern (Node.js)
function connect() {
const ws = new WebSocket('wss://api.tik.tools?uniqueId=USERNAME&apiKey=KEY')
ws.onmessage = (msg) => {
const event = JSON.parse(msg.data)
// Process event
}
ws.onclose = (e) => {
console.log(`Disconnected (${e.code}). Reconnecting in 3s...`)
setTimeout(connect, 3000)
}
ws.onerror = (err) => {
console.error('WebSocket error:', err.message)
ws.close()
}
}
connect()