跳到主要内容

WebSocket 总览

合约 WebSocket 实时推送行情、订单簿、K 线(含 1s 周期)、成交、标记价格,以及私有频道的订单、余额、持仓更新。

连接地址

类型地址
公共频道ws://<host>:9021/ws
私有频道ws://<host>:9021/ws(连接后发送 auth

客户端请求格式

所有客户端请求采用统一的 {op, args} 结构。

订阅

{
"op": "subscribe",
"args": [
"ticker@BTC_USDT",
"depth@BTC_USDT,20",
"kline@BTC_USDT,1s",
"BTC_USDT@markPrice@1s"
]
}

取消订阅

{
"op": "unsubscribe",
"args": ["ticker@BTC_USDT"]
}

认证(私有频道)

登录使用与 REST API 一致的 HmacSHA256 签名机制,详细说明请参考 公共模块 · Websocket 接口

心跳

{ "op": "ping" }

服务端响应格式

成功响应

{
"op": "subscribe",
"success": true,
"args": ["ticker@BTC_USDT"]
}

错误响应

{
"op": "subscribe",
"success": false,
"msg": "invalid channel format"
}

认证响应

{ "op": "auth", "success": true }
{ "op": "auth", "success": false, "msg": "token is expired" }

Pong 响应

{ "op": "pong" }

推送消息格式

所有推送消息统一为:

{
"ch": "<channel>",
"d": { ... }
}
字段说明
ch频道名称
d数据内容

频道汇总

频道类型格式示例权限合约特有
Ticker 行情ticker@{symbol}ticker@BTC_USDT公开-
深度快照depth@{symbol},{level}depth@BTC_USDT,20公开-
深度增量depth_update@{symbol}depth_update@BTC_USDT公开-
K 线kline@{symbol},{interval}kline@BTC_USDT,1s公开✅ 支持 1s 周期
成交trade@{symbol}trade@BTC_USDT公开-
标记价格(3s){symbol}@markPriceBTC_USDT@markPrice公开
标记价格(1s){symbol}@markPrice@1sBTC_USDT@markPrice@1s公开
订单orderorder私有-
余额balancebalance私有-
持仓positionposition私有

错误信息

错误信息说明
invalid message format消息格式错误
invalid channel format频道格式错误
unknown operation未知操作
authentication required需要认证
invalid tokenToken 无效
max subscriptions reached订阅数达到上限

快速开始示例

const ws = new WebSocket('ws://host:9021/ws');

ws.onopen = () => {
ws.send(JSON.stringify({
op: 'subscribe',
args: [
'ticker@BTC_USDT',
'depth@BTC_USDT,20',
'BTC_USDT@markPrice@1s',
'kline@BTC_USDT,1s'
]
}));
};

ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.ch) {
console.log('Channel:', msg.ch, 'Data:', msg.d);
} else if (msg.op) {
console.log('Response:', msg);
}
};

setInterval(() => ws.send(JSON.stringify({ op: 'ping' })), 30000);