كيف يعمل TikTok LIVE WebSocket
يوفر TikTool نقطة اتصال WebSocket مُدارة على wss://api.tik.tools تبث الأحداث لحظيًا من أي بث TikTok LIVE. تتصل بمفتاح API واسم مستخدم TikTok، ويتولى الخادم كل التفاوض على البروتوكول والمصادقة ومنطق إعادة الاتصال.
بخلاف الاتصال المباشر ببروتوكول البنية التحتية للبث في TikTok (الذي يتعطل كثيرًا)، فإن WebSocket API من TikTool وسيط مستقر بمستوى الإنتاج.
بداية سريعة - اتصل في 3 أسطر
JavaScript / Node.js
import { TikTokLive } from '@tiktool/live'
const client = new TikTokLive({ uniqueId: 'streamer_username', apiKey: 'YOUR_KEY' })
client.on('chat', e => console.log(`${e.user.uniqueId}: ${e.comment}`))
client.connect()أو اتصل مباشرة عبر WebSocket الأصلي (بدون SDK):
const ws = new WebSocket('wss://api.tik.tools?uniqueId=USERNAME&apiKey=YOUR_KEY')
ws.onmessage = (msg) => {
const event = JSON.parse(msg.data)
console.log(event.event, event.data)
}Python
import asyncio, websockets, json
async def connect():
uri = "wss://api.tik.tools?uniqueId=USERNAME&apiKey=YOUR_KEY"
async with websockets.connect(uri) as ws:
async for message in ws:
event = json.loads(message)
print(event["event"], event.get("data", {}))أي لغة
أي لغة تدعم WebSocket تعمل - Go و Rust و Java و C# و Ruby و PHP. اتصل فقط بـ:
wss://api.tik.tools?uniqueId=TIKTOK_USERNAME&apiKey=YOUR_API_KEYمعاملات اتصال WebSocket
uniqueId✓اسم مستخدم TikTok لصاحب البث (بدون @)apiKey✓مفتاح TikTool API الخاص بكjwtKeyمصادقة عبر JWT (بديل لـ apiKey لعملاء المتصفح المعتمدين على الرموز)أنواع الأحداث
كل رسالة WebSocket كائن JSON يحتوي على الحقلين event و data. هذه الأحداث التي ستستقبلها:
chatرسالة دردشة جديدة من مشاهد. تتضمن بيانات المستخدم ونص الرسالة والشارات.
giftهدية افتراضية أرسلها مشاهد. تتضمن اسم الهدية وقيمتها بالماسات وعدد التكرار.
likeأعجب مشاهد بالبث. يتضمن إجمالي عدد الإعجابات.
memberانضم مشاهد إلى البث. يُطلق عند دخول المستخدمين غرفة البث.
socialمتابعة / مشاركة / إضافة للمفضلة. الحقل data.action يحدد أيها (follow أو share أو favourite).
roomUserSeqتحديث عدد المشاهدين. يتضمن viewerCount الحالي و topViewers.
subscribeاشترك مشاهد في قناة صاحب البث.
battleحدث مباراة LinkMic. يتضمن حالة المباراة والنقاط والمدة والمشاركين.
battleArmiesتحديث فرق المباراة. نقاط الفرق وترتيب المشاركين.
linkMicتحديث تخطيط ضيوف LinkMic. يتضمن معرّفات المقاعد والضيوف في البث متعدد المضيفين.
roomPinثبّت صاحب البث رسالة دردشة.
liveIntroتحديث مقدمة البث. يتضمن عنوان البث ووصفه.
emoteChatرمز تعبيري مخصص أُرسل في الدردشة. يتضمن معرّف الرمز ورابط صورته.
envelopeحدث صندوق كنز / مغلف أحمر في البث.
questionسؤال أرسله مشاهد في جلسة الأسئلة والأجوبة.
rankUpdateتحديث ترتيب صاحب البث في منطقته.
barrageرسالة إعلان أعلى الشاشة.
superFanأصبح مشاهد Super Fan أو ارتقى مستواه. يتضمن المستوى الجديد.
superFanJoinانضم Super Fan إلى الغرفة.
superFanBoxحدث صندوق أو مكافأة Super Fan.
controlالتحكم في دورة حياة البث (إيقاف مؤقت، إنهاء، إلخ).
حدود الاتصال حسب الباقة
معالجة الأخطاء وإعادة الاتصال
يُغلق WebSocket برموز إغلاق قياسية. يجب أن يتعامل العميل مع إعادة الاتصال:
// Auto-reconnect pattern (Node.js)
function connect() {
const ws = new WebSocket('wss://api.tik.tools?uniqueId=USERNAME&apiKey=KEY')
ws.onmessage = (msg) => {
const event = JSON.parse(msg.data)
// Process event
}
ws.onclose = (e) => {
console.log(`Disconnected (${e.code}). Reconnecting in 3s...`)
setTimeout(connect, 3000)
}
ws.onerror = (err) => {
console.error('WebSocket error:', err.message)
ws.close()
}
}
connect()