Comment fonctionne le WebSocket TikTok LIVE
TikTool fournit un endpoint WebSocket géré sur wss://api.tik.tools qui diffuse en temps réel les événements de n'importe quel stream TikTok LIVE. Tu te connectes avec ta clé API et un pseudo TikTok - le serveur gère toute la négociation du protocole, l'authentification et la reconnexion.
Contrairement aux connexions directes au protocole de diffusion de TikTok (qui cassent souvent), l'API WebSocket de TikTool est un relais stable, prêt pour la production.
Démarrage rapide - connecte-toi en 3 lignes
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 connecte-toi directement en WebSocket natif (sans 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", {}))Tous les langages
Tout langage qui gère le WebSocket fonctionne - Go, Rust, Java, C#, Ruby, PHP. Connecte-toi simplement à :
wss://api.tik.tools?uniqueId=TIKTOK_USERNAME&apiKey=YOUR_API_KEYParamètres de connexion WebSocket
uniqueId✓Pseudo TikTok (sans @) du streamerapiKey✓Ta clé API TikTooljwtKeyAuthentification par JWT (alternative à apiKey pour les clients navigateur avec jeton)Types d'événements
Chaque message WebSocket est un objet JSON avec les champs event et data. Voici les événements que tu recevras :
chatNouveau message d'un spectateur dans le chat. Inclut les infos de l'utilisateur, le texte et les badges.
giftCadeau virtuel envoyé par un spectateur. Inclut le nom du cadeau, sa valeur en diamants et le nombre de répétitions.
likeUn spectateur a liké le stream. Inclut le nombre total de likes.
memberUn spectateur a rejoint le stream. Se déclenche quand un utilisateur entre dans la salle du live.
socialFollow / partage / favori. Le champ data.action indique lequel (follow, share, favourite).
roomUserSeqMise à jour du nombre de spectateurs. Inclut le viewerCount actuel et les topViewers.
subscribeUn spectateur s'est abonné au streamer.
battleÉvénement de battle LinkMic. Inclut le statut de la battle, les scores, la durée et les participants.
battleArmiesMise à jour des équipes de la battle. Scores des équipes et classement des participants.
linkMicMise à jour de la disposition des invités LinkMic. Inclut les IDs des emplacements et des invités pour les streams à plusieurs hôtes.
roomPinLe streamer a épinglé un message du chat.
liveIntroMise à jour de la présentation du stream. Inclut le titre et la description.
emoteChatEmote personnalisée envoyée dans le chat. Inclut l'ID de l'emote et l'URL de l'image.
envelopeÉvénement coffre au trésor / enveloppe rouge dans le stream.
questionQuestion Q&R envoyée par un spectateur.
rankUpdateActualisation du classement du streamer par région.
barrageMessage d'annonce / barrage en haut de l'écran.
superFanUn spectateur est devenu Super Fan ou a gagné un niveau. Inclut le nouveau niveau.
superFanJoinUn Super Fan a rejoint la salle.
superFanBoxÉvénement coffre / récompense Super Fan.
controlContrôle du cycle de vie du stream (pause, fin, etc.).
Limites de connexion par offre
Gestion des erreurs et reconnexion
Le WebSocket se ferme avec des codes de fermeture standard. Ton client doit gérer la reconnexion :
// 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()