WebSocket 即時推送
連線成功後發送訂閱指令,伺服器將持續推送最新報價、成交與盤口訊息。
連接
| 項目 | 說明 |
|---|---|
| 地址 | wss://api.itick.dev/{market},market 為 stock、forex、crypto、indices、future、fund 之一 |
| 認證 | 請求標頭 token,或查詢參數 ?token=(瀏覽器無法設置請求標頭) |
| 連接數 | 每個 API Key 在每個市场的並發連接數受方案限製 |
| 訂閱數 | 每個連接可訂閱的标的數受方案限製 |
| 心跳 | 建議至少每 30 秒發送一次 ping |
| 标的寫法 | 程式碼$地區,如 AAPL$US、700$HK、BTCUSDT$BA |
連接成功後會先收到 Connected Successfully 和 authenticated 兩條消息。免費方案預設不含 WebSocket,握手會回傳 403。
消息格式
// Subscribe / unsubscribe. types: tick, quote, depth, kline@1
{"ac":"subscribe","params":"AAPL$US,700$HK","types":"quote,tick"}
{"ac":"unsubscribe","params":"AAPL$US","types":"quote"}
// Heartbeat
{"ac":"ping","params":"1731688569840"}
// Pushed message
{"code":1,"data":{"s":"BTCUSDT","r":"BA","ld":83988.54,"v":0.00019,"type":"tick"}}types 可選 tick、quote、depth、kline@1,其中 kline@1 是否可用取決于方案。超出訂閱數上限時回傳 exceeding the maximum subscription limit。
JavaScript 示例
const ws = new WebSocket("wss://api.itick.dev/crypto?token=YOUR_API_KEY");
ws.onopen = () => {
ws.send(JSON.stringify({ ac: "subscribe", params: "BTCUSDT$BA", types: "quote,tick" }));
// 每 30 秒至少发送一次心跳
setInterval(() => ws.send(JSON.stringify({ ac: "ping", params: String(Date.now()) })), 25000);
};
ws.onmessage = (event) => console.log(event.data);注意事項
- 權杖被停用、重置或過期時,已建立的連接會被服務端斷開,請在斷線後重連並重新訂閱。
- WebSocket 握手也計入每分鐘請求數。
- 同一個标的被多個連接訂閱時,推送互不影響。