REFERENCE EVENTS · LIVE FIREHOSE · ΣΕ ΡΟΗ ΤΩΡΑ

Όλο το λεξιλόγιο events του TikTok LIVE

Chat. Δώρα. Likes. Είσοδοι. Follows. Battles. Συνδρομές. Κάθε event των TikTok LIVE streams έρχεται από ένα WebSocket με πλούσια metadata. Η ροή παρακάτω είναι το πραγματικό δημόσιο firehose αυτή τη στιγμή - όχι mockup.

Live ροή events

0 events στο buffer · πραγματικό δημόσιο stream

Αναμονή για το επόμενο 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, badges
commentStringΤο κείμενο του μηνύματος
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Μέτρηση streak
repeatEndBooleanTrue όταν τελειώνει το streak
{
  "event": "gift",
  "data": {
    "user": {
      "uniqueId": "big_fan"
    },
    "giftName": "Rose",
    "giftId": 5655,
    "diamondCount": 1,
    "repeatCount": 5,
    "repeatEnd": true
  }
}

likeΠολύ συχνό

Ενεργοποιείται όταν ένας θεατής πατά like. Περιέχει το σύνολο των likes.

userObjectΑυτός που έκανε like
likeCountNumberLikes αυτού του event
totalLikeCountNumberΣύνολο 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`.