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", {}))모든 언어
Go, Rust, Java, C#, Ruby, PHP 등 WebSocket을 지원하는 언어라면 다 돼요. 여기로 연결만 하면 돼요:
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시청자가 스트리머를 구독했어요.
battleLinkMic 배틀 이벤트. 배틀 상태, 점수, 진행 시간, 참가자 포함.
battleArmies배틀 아미 업데이트. 팀 점수와 참가자 순위.
linkMicLinkMic 게스트 레이아웃 업데이트. 멀티 호스트 방송의 슬롯/게스트 사용자 ID 포함.
roomPin스트리머가 채팅 메시지를 고정했어요.
liveIntro방송 소개 업데이트. 방송 제목과 설명 포함.
emoteChat채팅에서 보낸 커스텀 이모트. 이모트 ID와 이미지 URL 포함.
envelope방송 중 보물 상자 / 홍바오 이벤트.
question시청자가 올린 Q&A 질문.
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()