TikTok LIVE WebSocket 怎麼運作
TikTool 在 wss://api.tik.tools 提供代管的 WebSocket 端點,串流任何 TikTok LIVE 直播的即時事件。你只要帶 API 金鑰和 TikTok 使用者名稱連線,協定協商、驗證和重新連線的邏輯全部由伺服器處理。
直接用協定連 TikTok 的直播基礎設施常常會壞掉,TikTool 的 WebSocket API 則是穩定、正式環境等級的中繼服務。
快速開始 - 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_KEYWebSocket 連線參數
uniqueId✓直播主的 TikTok 使用者名稱(不含 @)apiKey✓你的 TikTool API 金鑰jwtKeyJWT 驗證(給使用權杖的瀏覽器用戶端,可取代 apiKey)事件類型
每則 WebSocket 訊息都是一個含 event 和 data 欄位的 JSON 物件。以下是你會收到的事件:
chat觀眾發出新的聊天訊息。包含使用者資訊、訊息內容和徽章。
gift觀眾送出直播禮物。包含禮物名稱、鑽石價值和連送次數。
like觀眾按讚直播。包含總按讚數。
member觀眾加入直播。使用者進入直播間時觸發。
social追蹤 / 分享 / 收藏。data.action 欄位會告訴你是哪一種(follow、share、favourite)。
roomUserSeq觀看人數更新。包含目前的 viewerCount 和 topViewers。
subscribe觀眾訂閱了直播主。
battle連線 PK 事件。包含 PK 狀態、分數、時長和參與者。
battleArmiesPK 隊伍更新。隊伍分數和參與者排名。
linkMic連線來賓版面更新。包含多人直播的座位 / 來賓使用者 ID。
roomPin直播主置頂了一則聊天訊息。
liveIntro直播簡介更新。包含直播標題和說明。
emoteChat聊天中送出的自訂表情。包含表情 ID 和圖片網址。
envelope直播中的寶箱 / 紅包事件。
question觀眾提出的問答題。
rankUpdate直播主各地區排名刷新。
barrage畫面上方的彈幕 / 公告訊息。
superFan觀眾成為超級粉絲或升級。包含新等級。
superFanJoin超級粉絲進入直播間。
superFanBox超級粉絲寶箱 / 獎勵事件。
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()