REFERENCE EVENTS · LIVE FIREHOSE · ΣΕ ΡΟΗ ΤΩΡΑ
Όλο το λεξιλόγιο events του TikTok LIVE
Chat. Δώρα. Likes. Είσοδοι. Follows. Battles. Συνδρομές. Κάθε event των TikTok LIVE streams έρχεται από ένα WebSocket με πλούσια metadata. Η ροή παρακάτω είναι το πραγματικό δημόσιο firehose αυτή τη στιγμή - όχι mockup.
Live ροή events
Αναμονή για το επόμενο live event...
Το δημόσιο firehose είναι με απόκρυψη, αλλά κάθε event είναι πραγματικό push από πραγματικό TikTok LIVE room. Συνδέσου με δικό σου key για να λαμβάνεις ολόκληρο το payload χωρίς απόκρυψη (πραγματικά usernames, πραγματικά avatars, πραγματικά διαμάντια) - το μόνο που αλλάζει από πακέτο σε πακέτο είναι το όριο ταυτόχρονων συνδέσεων.
Σύνδεση στο firehose από το δικό σου stack
Διάλεξε γλώσσα. Αντέγραψε. Τρέξε. Sandbox key από /pricing.
import { TiktokLiveClient } from '@tiktool/live'
const client = new TiktokLiveClient({
apiKey: process.env.TIKTOOL_API_KEY,
uniqueId: 'tiktok_handle_here',
})
client.on('gift', (e) => {
console.log(`${e.user.uniqueId} sent ${e.giftName} (${e.diamondCount} diamonds)`)
})
client.on('chat', (e) => console.log(`${e.user.uniqueId}: ${e.comment}`))
client.on('member', (e) => console.log(`+ join ${e.user.uniqueId}`))
client.on('like', (e) => console.log(`+ ${e.likeCount} likes`))
client.on('linkMicBattle', (e) => console.log('battle update', e.battleUsers))
await client.connect()Κάθε event, τι το ενεργοποιεί, τι έχει μέσα το payload
Όλα τα events έχουν κοινό envelope { event: string, data: object }. Παρακάτω: κάθε τύπος event και τα δεδομένα που φέρνει.
chatΠολύ συχνό
Ενεργοποιείται όταν ένας θεατής στέλνει μήνυμα στο chat. Το πιο συχνό event.
userObjectuniqueId, nickname, profilePictureUrl, badgescommentStringΤο κείμενο του μηνύματοςuserIdStringΑριθμητικό user ID στο TikTok{
"event": "chat",
"data": {
"user": {
"uniqueId": "viewer42",
"nickname": "Viewer 42"
},
"comment": "Hello!",
"userId": "7123456789"
}
}giftΜέτριο
Ενεργοποιείται όταν ένας θεατής στέλνει εικονικό δώρο. Περιέχει όνομα δώρου, αξία σε διαμάντια και δεδομένα streak.
userObjectΑποστολέαςgiftNameStringπ.χ. "Rose", "Galaxy"giftIdNumberΑριθμητικό ID δώρουdiamondCountNumberΑξία σε διαμάντιαrepeatCountNumberΜέτρηση streakrepeatEndBooleanTrue όταν τελειώνει το streak{
"event": "gift",
"data": {
"user": {
"uniqueId": "big_fan"
},
"giftName": "Rose",
"giftId": 5655,
"diamondCount": 1,
"repeatCount": 5,
"repeatEnd": true
}
}likeΠολύ συχνό
Ενεργοποιείται όταν ένας θεατής πατά like. Περιέχει το σύνολο των likes.
userObjectΑυτός που έκανε likelikeCountNumberLikes αυτού του eventtotalLikeCountNumberΣύνολο stream{
"event": "like",
"data": {
"user": {
"uniqueId": "liker1"
},
"likeCount": 15,
"totalLikeCount": 12500
}
}memberΜέτριο
Ενεργοποιείται όταν ένας θεατής μπαίνει στο live room.
userObjectΧρήστης που μπαίνει{
"event": "member",
"data": {
"user": {
"uniqueId": "new_viewer",
"nickname": "New Viewer"
}
}
}followΧαμηλό
Ενεργοποιείται όταν ένας θεατής κάνει follow στον streamer κατά τη διάρκεια του live.
userObjectΧρήστης που κάνει follow{
"event": "follow",
"data": {
"user": {
"uniqueId": "new_follower"
}
}
}shareΧαμηλό
Ενεργοποιείται όταν ένας θεατής κάνει share το live stream.
userObjectΧρήστης που κάνει share{
"event": "share",
"data": {
"user": {
"uniqueId": "sharer"
}
}
}roomUserSeqΠεριοδικό
Περιοδική ενημέρωση αριθμού θεατών. Ο βασικός τρόπος να παρακολουθείς τους θεατές σε πραγματικό χρόνο. Το SDK το στέλνει επίσης ως viewer_count (alias, ίδιο payload).
viewerCountNumberΘεατές live αυτή τη στιγμήtopViewersArrayΤαξινομημένοι κατά engagement{
"event": "roomUserSeq",
"data": {
"viewerCount": 1234,
"topViewers": [
{
"user": {
"uniqueId": "top_fan"
},
"coinCount": 5000
}
]
}
}subscribeΣπάνιο
Ενεργοποιείται όταν ένας θεατής κάνει συνδρομή στον streamer.
userObjectΣυνδρομητής{
"event": "subscribe",
"data": {
"user": {
"uniqueId": "subscriber1"
}
}
}linkMicBattleΚατά τα battles
Ενεργοποιείται όταν ένα TikTok LIVE battle ξεκινά, ενημερώνεται ή τελειώνει. Περιέχει σκορ + συμμετέχοντες.
battleUsersArrayΣυμμετέχοντες με σκορtypeNumber1=έναρξη, 2=ενημέρωση, 3=λήξη{
"event": "linkMicBattle",
"data": {
"type": 1,
"battleUsers": [
{
"uniqueId": "streamer1"
},
{
"uniqueId": "streamer2"
}
]
}
}roomPinΣπάνιο
Ενεργοποιείται όταν ο streamer καρφιτσώνει ένα μήνυμα chat.
pinnedMessageObjectΠεριεχόμενο μηνύματος + αποστολέας{
"event": "roomPin",
"data": {
"pinnedMessage": {
"text": "Welcome!",
"user": {
"uniqueId": "streamer"
}
}
}
}Συχνές ερωτήσεις
Χρειάζομαι επί πληρωμή πακέτο για να λαμβάνω events;
Όχι για αξιολόγηση. Το Sandbox key λειτουργεί για 7 ημέρες και δίνει το πλήρες πραγματικό payload των events (πραγματικά usernames, πραγματικά diamonds κ.λπ.) - ο client σου υπογράφει το upstream WebSocket με το δικό του TikTok cookie. Κατά την αξιολόγηση τα όρια είναι 3 ταυτόχρονες συνδέσεις WebSocket και 5.000 REST requests/ημέρα. Μετά τις 7 ημέρες απαιτείται επί πληρωμή πακέτο· το Basic με $7/εβδ. δίνει 20 ταυτόχρονα WS + 10.000 requests/ημέρα.
Ποιο event ενεργοποιείται πιο συχνά σε ένα stream με κίνηση;
Σε συχνότητα κυριαρχούν τα `like` και `chat`. Το `gift` είναι το σήμα με τη μεγαλύτερη αξία ανά event.
Μπορώ να παρακολουθώ πολλούς creators του TikTok ταυτόχρονα;
Ναι. Άνοιξε ένα WebSocket ανά uniqueId. Το Pro επιτρέπει 50 ταυτόχρονα WS, το Ultra 250.
Πώς καταλαβαίνω πότε τελειώνει ένα streak δώρων;
Streak κάνουν μόνο τα δώρα που το υποστηρίζουν (`giftType` 1): περίμενε το `repeatEnd === true`, ή κλείσ' το μόνος σου όταν δεν έρθει νέο frame για λίγα δευτερόλεπτα, και κράτα το μεγαλύτερο `repeatCount`. Τα υπόλοιπα δώρα δεν στέλνουν ποτέ frame λήξης: μια αποστολή με ποσότητα, π.χ. 8x, είναι ένα frame με `repeatCount` 8, οπότε μέτρα το μόλις φτάσει. Σε κάθε περίπτωση, τα συνολικά διαμάντια = `diamondCount * repeatCount`.
Πόση καθυστέρηση έχει σε σχέση με το πραγματικό stream;
Τα events φτάνουν ~150-400ms αφού συμβούν στο TikTok. Πιο γρήγορα από το ίδιο το video stream στα περισσότερα CDN.
Έρχονται τα events των battles και για τους δύο creators;
Ναι. Συνδέσου σε οποιονδήποτε από τους δύο creators του battle - και οι δύο λαμβάνουν το ίδιο event `linkMicBattle` με συμπληρωμένους και τους δύο `battleUsers`.