Como funciona o WebSocket do TikTok LIVE
O TikTool oferece um endpoint WebSocket gerenciado em wss://api.tik.tools que transmite eventos em tempo real de qualquer live do TikTok. Você conecta com sua chave de API e um usuário do TikTok - o servidor cuida de toda a negociação de protocolo, autenticação e lógica de reconexão.
Diferente de conexões diretas ao protocolo da infraestrutura de transmissão do TikTok (que quebram com frequência), a API WebSocket do TikTool é um relay estável, pronto para produção.
Início rápido - Conecte em 3 linhas
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()Ou conecte direto com WebSocket nativo (sem precisar de 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", {}))Qualquer linguagem
Qualquer linguagem com suporte a WebSocket funciona - Go, Rust, Java, C#, Ruby, PHP. É só conectar em:
wss://api.tik.tools?uniqueId=TIKTOK_USERNAME&apiKey=YOUR_API_KEYParâmetros de conexão do WebSocket
uniqueId✓Usuário do TikTok (sem @) do streamerapiKey✓Sua chave de API do TikTooljwtKeyAutenticação por JWT (alternativa ao apiKey para clientes de navegador com token)Tipos de evento
Toda mensagem do WebSocket é um objeto JSON com os campos event e data. Estes são os eventos que você vai receber:
chatNova mensagem de chat de um espectador. Inclui info do usuário, texto da mensagem e badges.
giftPresente virtual enviado por um espectador. Inclui nome do presente, valor em diamantes e contagem de repetição.
likeUm espectador curtiu a live. Inclui o total de curtidas.
memberUm espectador entrou na live. Dispara quando usuários entram na sala.
socialSeguir / compartilhar / favoritar. O campo data.action diz qual foi (follow, share, favourite).
roomUserSeqAtualização do número de espectadores. Inclui o viewerCount atual e os topViewers.
subscribeUm espectador se inscreveu no streamer.
battleEvento de batalha LinkMic. Inclui status da batalha, placar, duração e participantes.
battleArmiesAtualização dos times da batalha. Placar dos times e ranking dos participantes.
linkMicAtualização do layout de convidados do LinkMic. Inclui IDs de slot/convidado em lives com vários apresentadores.
roomPinO streamer fixou uma mensagem do chat.
liveIntroAtualização da introdução da live. Inclui título e descrição da live.
emoteChatEmote personalizado enviado no chat. Inclui o ID do emote e a URL da imagem.
envelopeEvento de baú do tesouro / envelope vermelho na live.
questionPergunta de Q&A enviada por um espectador.
rankUpdateAtualização do ranking do streamer por região.
barrageMensagem de destaque/anúncio no topo da tela.
superFanUm espectador virou Super Fã ou subiu de nível. Inclui o novo nível.
superFanJoinUm Super Fã entrou na sala.
superFanBoxEvento de caixa / recompensa de Super Fã.
controlControle do ciclo de vida da live (pausa, fim etc.).
Limites de conexão por plano
Tratamento de erros e reconexão
O WebSocket fecha com códigos de fechamento padrão. Seu cliente precisa tratar a reconexão:
// 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()