OLAY REFERANSI · CANLI FIREHOSE · ŞU AN AKIYOR
TikTok LIVE olaylarının tam listesi
Sohbet. Hediyeler. Beğeniler. Katılımlar. Takipler. PK'ler. Abonelikler. TikTok LIVE'daki her olay, zengin meta veriyle tek bir WebSocket üzerinden akar. Aşağıdaki akış şu anki gerçek, herkese açık firehose; bir maket değil.
Canlı olay akışı
Bir sonraki canlı olay bekleniyor...
Herkese açık firehose maskelidir, ama her olay gerçek bir TikTok LIVE odasından gelen gerçek bir veridir. Maskesiz yükün tamamını (gerçek kullanıcı adları, gerçek avatarlar, gerçek elmas sayıları) almak için kendi anahtarınla bağlan; planlar arasında değişen tek şey eşzamanlı bağlantı sınırıdır.
Kendi altyapında firehose'a abone ol
Dilini seç. Kopyala. Çalıştır. Sandbox anahtarı: /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()Her olay: neyin tetiklediği, yükte neler olduğu
Tüm olaylar { event: string, data: object } zarfını paylaşır. Aşağıda: her olay türü ve taşıdığı veri.
chatÇok sık
Bir izleyici sohbet mesajı gönderdiğinde tetiklenir. En yaygın olay.
userObjectuniqueId, nickname, profilePictureUrl, badgescommentStringMesaj metniuserIdStringSayısal TikTok kullanıcı kimliği{
"event": "chat",
"data": {
"user": {
"uniqueId": "viewer42",
"nickname": "Viewer 42"
},
"comment": "Hello!",
"userId": "7123456789"
}
}giftOrta
Bir izleyici sanal hediye gönderdiğinde tetiklenir. Hediye adını, elmas değerini ve seri verisini içerir.
userObjectGönderengiftNameStringör. "Gül", "Galaksi"giftIdNumberSayısal hediye kimliğidiamondCountNumberElmas değerirepeatCountNumberSeri sayısırepeatEndBooleanSeri bittiğinde true{
"event": "gift",
"data": {
"user": {
"uniqueId": "big_fan"
},
"giftName": "Rose",
"giftId": 5655,
"diamondCount": 1,
"repeatCount": 5,
"repeatEnd": true
}
}likeÇok sık
Bir izleyici beğeni düğmesine dokunduğunda tetiklenir. Toplam birikmiş beğeniyi içerir.
userObjectBeğenenlikeCountNumberBu olaydaki sayıtotalLikeCountNumberYayın toplamı{
"event": "like",
"data": {
"user": {
"uniqueId": "liker1"
},
"likeCount": 15,
"totalLikeCount": 12500
}
}memberOrta
Bir izleyici canlı yayın odasına katıldığında tetiklenir.
userObjectKatılan kullanıcı{
"event": "member",
"data": {
"user": {
"uniqueId": "new_viewer",
"nickname": "New Viewer"
}
}
}followDüşük
Bir izleyici canlı yayın sırasında yayıncıyı takip ettiğinde tetiklenir.
userObjectTakip eden kullanıcı{
"event": "follow",
"data": {
"user": {
"uniqueId": "new_follower"
}
}
}shareDüşük
Bir izleyici canlı yayını paylaştığında tetiklenir.
userObjectPaylaşan kullanıcı{
"event": "share",
"data": {
"user": {
"uniqueId": "sharer"
}
}
}roomUserSeqPeriyodik
Periyodik izleyici sayısı güncellemesi. Anlık izleyici sayısını takip etmenin ana yolu. SDK bunu viewer_count olarak da yayar (takma ad, aynı yük).
viewerCountNumberŞu anki canlı izleyicilertopViewersArrayEtkileşime göre sıralı{
"event": "roomUserSeq",
"data": {
"viewerCount": 1234,
"topViewers": [
{
"user": {
"uniqueId": "top_fan"
},
"coinCount": 5000
}
]
}
}subscribeNadir
Bir izleyici yayıncıya abone olduğunda tetiklenir.
userObjectAbone{
"event": "subscribe",
"data": {
"user": {
"uniqueId": "subscriber1"
}
}
}linkMicBattlePK sırasında
Bir TikTok LIVE PK'si başladığında, güncellendiğinde ya da bittiğinde tetiklenir. Skorları ve katılımcıları içerir.
battleUsersArraySkorlarıyla katılımcılartypeNumber1=başlangıç, 2=güncelleme, 3=bitiş{
"event": "linkMicBattle",
"data": {
"type": 1,
"battleUsers": [
{
"uniqueId": "streamer1"
},
{
"uniqueId": "streamer2"
}
]
}
}roomPinNadir
Yayıncı bir sohbet mesajını sabitlediğinde tetiklenir.
pinnedMessageObjectMesaj içeriği + gönderen{
"event": "roomPin",
"data": {
"pinnedMessage": {
"text": "Welcome!",
"user": {
"uniqueId": "streamer"
}
}
}
}Sıkça sorulanlar
Olayları almak için ücretli bir plana ihtiyacım var mı?
Hayır. Sandbox planı ücretsizdir ve gerçek olay yükünün tamamını (gerçek kullanıcı adları, gerçek elmaslar vb.) iletir; istemcin üst akış WebSocket'ini kendi TikTok çereziyle imzalar. Tek kesin sınırlar 3 eşzamanlı WebSocket bağlantısı ve günde 5.000 REST isteğidir. Haftalık $7'lık Basic, sınırı 20 eşzamanlı WS + günde 10.000 isteğe çıkarır.
Yoğun bir yayında en sık hangi olay tetiklenir?
Sıklıkta `like` ve `chat` başı çeker. Olay başına en yüksek değerli sinyal `gift`'tir.
Birden fazla TikTok yayıncısına aynı anda abone olabilir miyim?
Evet. Her uniqueId için bir WebSocket aç. Pro plan 50, Ultra 250 eşzamanlı WS'ye izin verir.
Bir hediye serisinin bittiğini nasıl anlarım?
Yalnızca seri yapılabilen hediyeler (`giftType` 1) seri oluşturur: `repeatEnd === true` değerini bekle ya da birkaç saniye boyunca yeni kare gelmezse seriyi kendin kapat ve en yüksek `repeatCount` değerini al. Diğer hediyeler hiçbir zaman bitiş karesi göndermez: 8x gibi adetli bir gönderim, `repeatCount` 8 olan tek bir karedir, bu yüzden geldiği anda say. Her iki durumda da toplam elmas = `diamondCount * repeatCount`.
Gerçek yayına göre gecikme ne kadar?
Olaylar, TikTok'ta tetiklendikten ~150-400 ms sonra gelir. Çoğu CDN'de video yayınının kendisinden daha hızlı.
PK'ler iki yayıncı için de tetiklenir mi?
Evet. PK'deki yayıncılardan herhangi birine bağlan; ikisi de `battleUsers` alanında iki tarafın da dolu olduğu aynı `linkMicBattle` olayını alır.