TikTok LIVE WebSocket 如何工作
TikTool 在 wss://api.tik.tools 提供托管 WebSocket 端点,实时推送任意 TikTok 直播间的事件。你只需用 API Key 和 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 KeyjwtKey基于 JWT 的鉴权(令牌化浏览器客户端可用来替代 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 和图片 URL。
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()