B安 Websocket推送的消息为JSON格式,每条消息包含事件类型e、事件时间E、交易对s以及具体数据字段。例如K线消息中包含开盘价o、收盘价c、最高h、最低l、成交量v与K线是否完结x等字段。
对于深度增量推送,每条消息只包含变动的盘口档位,客户端需要本地维护完整深度,通过snapshot+增量的方式实时同步。这是Websocket开发中容易出错的部分,建议参考BN官方文档中的标准实现。
断线重连与心跳机制
Websocket连接受网络波动、服务端重启等因素影响可能断开,币岸要求客户端在收到ping帧后24小时内回复pong帧,否则会被强制断连。建议在客户端实现心跳监测,每5分钟发送一次pong,并对收到的所有消息更新最后一次活跃时间。
断线后应当采用指数退避策略重连,初始间隔1秒、最大间隔60秒。重连后需要重新发起订阅,并对深度数据重新拉取snapshot同步状态。
用户数据流的特殊处理
用户数据流通过listenKey连接,listenKey有效期60分钟,必须每30分钟通过REST API刷新一次(PUT /api/v3/userDataStream)。如果忘记刷新,连接会在60分钟后自动断开,丢失订单状态更新可能导致策略空仓。