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ışı

0 olay arabellekte · gerçek herkese açık yayın

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, badges
commentStringMesaj metni
userIdStringSayı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önderen
giftNameStringör. "Gül", "Galaksi"
giftIdNumberSayısal hediye kimliği
diamondCountNumberElmas değeri
repeatCountNumberSeri 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ğenen
likeCountNumberBu 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ı izleyiciler
topViewersArrayEtkileş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ılar
typeNumber1=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.