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 示例
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 握手也计入每分钟请求数。
- 同一个标的被多个连接订阅时,推送互不影响。