跳至正文

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 示例

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 握手也計入每分鐘請求數。
  • 同一個标的被多個連接訂閱時,推送互不影響。