跳到正文
iTick Dev

WebSocket 实时推送

协议兼容 iTick:订阅标的后,服务端持续推送报价、成交、盘口等消息。

连接

项目说明
地址wss://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://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 握手也计入每分钟请求数。
  • 同一个标的被多个连接订阅时,推送互不影响。