REFERENSI EVENT · FIREHOSE LIVE · SEDANG BERJALAN

Kosakata event lengkap dari TikTok LIVE

Chat. Hadiah. Like. Join. Follow. LIVE match. Langganan. Semua event di TikTok LIVE mengalir lewat satu WebSocket dengan metadata lengkap. Feed di bawah ini adalah firehose publik asli saat ini - bukan mockup.

Feed event live

0 event di-buffer · siaran publik asli

Menunggu event live berikutnya...

Firehose publik disamarkan, tapi setiap event adalah push asli dari room TikTok LIVE asli. Sambungkan dengan key kamu sendiri untuk menerima payload lengkap yang terbuka penuh (username asli, avatar asli, jumlah berlian asli) - satu-satunya yang berbeda antar paket adalah batas koneksi bersamaan.

Langgani firehose di stack kamu

Pilih bahasanya. Salin. Jalankan. Key sandbox dari /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()

Setiap event, pemicunya, dan isi payload-nya

Semua event memakai format { event: string, data: object } yang sama. Di bawah ini: setiap jenis event dan data yang dibawanya.

chatSangat sering

Terpicu saat penonton mengirim pesan chat. Event paling umum.

userObjectuniqueId, nickname, profilePictureUrl, badges
commentStringTeks pesan
userIdStringID pengguna TikTok (angka)
{
  "event": "chat",
  "data": {
    "user": {
      "uniqueId": "viewer42",
      "nickname": "Viewer 42"
    },
    "comment": "Hello!",
    "userId": "7123456789"
  }
}

giftSedang

Terpicu saat penonton mengirim hadiah virtual. Berisi nama hadiah, nilai berlian, dan data streak.

userObjectPengirim
giftNameStringmis. "Rose", "Galaxy"
giftIdNumberID hadiah (angka)
diamondCountNumberNilai berlian
repeatCountNumberJumlah streak
repeatEndBooleanTrue saat streak selesai
{
  "event": "gift",
  "data": {
    "user": {
      "uniqueId": "big_fan"
    },
    "giftName": "Rose",
    "giftId": 5655,
    "diamondCount": 1,
    "repeatCount": 5,
    "repeatEnd": true
  }
}

likeSangat sering

Terpicu saat penonton mengetuk tombol like. Berisi total like yang terkumpul.

userObjectPemberi like
likeCountNumberJumlah di event ini
totalLikeCountNumberTotal siaran
{
  "event": "like",
  "data": {
    "user": {
      "uniqueId": "liker1"
    },
    "likeCount": 15,
    "totalLikeCount": 12500
  }
}

memberSedang

Terpicu saat penonton masuk ke room siaran live.

userObjectPengguna yang masuk
{
  "event": "member",
  "data": {
    "user": {
      "uniqueId": "new_viewer",
      "nickname": "New Viewer"
    }
  }
}

followJarang

Terpicu saat penonton mengikuti streamer selama live.

userObjectPengguna yang mengikuti
{
  "event": "follow",
  "data": {
    "user": {
      "uniqueId": "new_follower"
    }
  }
}

shareJarang

Terpicu saat penonton membagikan siaran live.

userObjectPengguna yang membagikan
{
  "event": "share",
  "data": {
    "user": {
      "uniqueId": "sharer"
    }
  }
}

roomUserSeqBerkala

Update jumlah penonton secara berkala. Cara utama melacak jumlah penonton real-time. SDK juga mengirimnya sebagai viewer_count (alias, payload sama).

viewerCountNumberPenonton live saat ini
topViewersArrayDiurutkan menurut engagement
{
  "event": "roomUserSeq",
  "data": {
    "viewerCount": 1234,
    "topViewers": [
      {
        "user": {
          "uniqueId": "top_fan"
        },
        "coinCount": 5000
      }
    ]
  }
}

subscribeLangka

Terpicu saat penonton berlangganan ke streamer.

userObjectPelanggan
{
  "event": "subscribe",
  "data": {
    "user": {
      "uniqueId": "subscriber1"
    }
  }
}

linkMicBattleSelama LIVE match

Terpicu saat LIVE match TikTok dimulai, diperbarui, atau berakhir. Berisi skor + peserta.

battleUsersArrayPeserta beserta skornya
typeNumber1=mulai, 2=update, 3=selesai
{
  "event": "linkMicBattle",
  "data": {
    "type": 1,
    "battleUsers": [
      {
        "uniqueId": "streamer1"
      },
      {
        "uniqueId": "streamer2"
      }
    ]
  }
}

roomPinLangka

Terpicu saat streamer menyematkan pesan chat.

pinnedMessageObjectIsi pesan + pengirim
{
  "event": "roomPin",
  "data": {
    "pinnedMessage": {
      "text": "Welcome!",
      "user": {
        "uniqueId": "streamer"
      }
    }
  }
}

Pertanyaan umum

Apakah saya butuh paket berbayar untuk menerima event?

Tidak. Paket Sandbox gratis dan mengirim payload event asli yang lengkap (username asli, berlian asli, dll) - client kamu menandatangani WebSocket upstream dengan cookie TikTok miliknya sendiri. Batas kerasnya hanya 3 koneksi WebSocket bersamaan dan 5.000 request REST/hari. Basic seharga $7/mgg menaikkan batasnya ke 20 WS bersamaan + 10.000 request/hari.

Event mana yang paling sering terpicu di siaran yang ramai?

`like` dan `chat` paling mendominasi dari segi frekuensi. `gift` adalah sinyal dengan nilai tertinggi per event.

Bisakah saya berlangganan ke beberapa kreator TikTok sekaligus?

Bisa. Buka satu WebSocket per uniqueId. Paket Pro mengizinkan 50 WS bersamaan, Ultra 250.

Bagaimana cara mendeteksi kapan streak hadiah selesai?

Hanya hadiah yang bisa di-streak (`giftType` 1) yang punya streak: pantau `repeatEnd === true`, atau tutup sendiri kalau tidak ada frame baru selama beberapa detik, lalu ambil `repeatCount` tertinggi. Hadiah lain tidak pernah mengirim frame akhir: pengiriman dengan jumlah seperti 8x adalah satu frame dengan `repeatCount` 8, jadi hitung saat frame itu datang. Apa pun kasusnya, total berlian = `diamondCount * repeatCount`.

Berapa latensinya dibanding siaran aslinya?

Event tiba sekitar 150-400ms setelah terjadi di TikTok. Lebih cepat dari stream videonya sendiri di sebagian besar CDN.

Apakah event LIVE match terpicu untuk kedua kreator?

Ya. Sambungkan ke salah satu kreator di LIVE match itu - keduanya menerima event `linkMicBattle` yang sama dengan `battleUsers` milik kedua pihak terisi.