订阅数据(addChannel)以及接收订阅数据的大致流程
┌────────┐ ┌────────┐
│ Client │ │ Server │
└───┬────┘ └───┬────┘
│ {"event": "addChannel", |
| "channel": "xxx channel"} │
├─────────────────────────────────>│
| |
│ {"channel": "xxx channel", |
| "data": "data of channel"}│
│<┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┤
| |
│ {"channel": "xxx channel", |
| "data": "data of channel"}│
│<┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┤
| |
│ {"channel": "xxx channel", |
| "data": "data of channel"}│
│<┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┤
│ │
注:订阅 channel 成功之后,当 channel 对应的数据有更新时,Server 按一定的频率把 channel 对应的新数据推送给 Client
订阅数据的格式
成功建立和 WebSocket API 的连接之后,向 Server 发送如下格式的数据来订阅数据
{
"event": "addChannel",
"channel": "channel to sub"
}
正确订阅的例子
正确订阅
{
"event": "addChannel",
"channel": "babel_sub_spot_BIX_BTC_kline_1min"
}
"channel"的值为 channel ,请参考"5. channel格式"的 channel 格式
订阅成功返回数据的例子
[{
"channel": "babel_sub_spot_BIX_BTC_kline_1min",
"data_type": 0, //订阅成功返回一次全量数据,之后返回增量
"data":
[
{
"time":1536310020000,
"open":"0.00006614",
"high":"0.00006659",
"low":"0.00006604",
"close":"0.00006652",
"vol":"74056.89597166"
},
{
"time":1536310080000,
"open":"0.00006652",
"high":"0.00006652",
"low":"0.00006652",
"close":"0.00006652",
"vol":"100"
}
]
}]
"data_type"标识返回的数据是全量还是增量,0-返回全量数据,1-返回增量数据
data 说明
"data": {
"time": k线某周期开始时间,
"count": 成交笔数,
"open": 开盘价,
"high": 最高价,
"low": 最低价,
"close": 收盘价
"vol": 成交量
}
之后每当 Kline 有更新时,client 会收到数据,例子
[{
"channel": "babel_sub_spot_BIX_BTC_kline_1min",
"data_type": 1,
"data":
[
{
"time":1536310020000,
"open":"0.00006614",
"high":"0.00006659",
"low":"0.00006604",
"close":"0.00006652",
"vol":"74056.89597166"
},
{
"time":1536310080000,
"open":"0.00006652",
"high":"0.00006652",
"low":"0.00006652",
"close":"0.00006652",
"vol":"100"
}
]
}]
注:返回增量k线时,每次都返回最新相邻两条kline
错误订阅的例子
错误订阅(错误的 pair,大小写敏感)
{
"event": "addChannel",
"channel": "babel_sub_spot_bix_btc_kline_1min"
}
订阅失败返回数据的例子
{
"channel": "babel_sub_spot_bix_btc_kline_1min",
"error":
{
"code": "3009",
"msg":"推送订阅channel不合法"
}
}