Websocket 简介#
WebSocket是HTML5一种新的协议(Protocol)。它实现了用户端与服务器全双工通信, 使得数据可以快速地双向传播。通过一次简单的握手就可以建立用户端和服务器连接, 服务器根据业务规则可以主动推送信息给用户端。其优点如下:
- 用户端和服务器进行数据传输时,请求头信息比较小,大概2个字节。
- 用户端和服务器皆可以主动地发送数据给对方。
- 不需要多次创建 TCP 请求和销毁,节约宽带和服务器的资源。
连接#
连接限制:3 次/秒 (基于IP)
当订阅私有频道时,使用私有服务的地址
请求限制
每个连接 对于 订阅/取消订阅/登录 请求的总次数限制为 480 次/小时 如果出现网络问题,系统会自动断开连接 如果连接成功后 30s 未订阅或订阅后 30s 内服务器未向用户推送数据,系统会自动断开连接
为了保持连接有效且稳定,建议您进行以下操作:
- 每次接收到消息后,用户设置一个定时器,定时N秒,N 小于 30。
- 如果定时器被触发(N 秒内没有收到新消息),发送字符串 'ping'。
- 期待一个文字字符串 'pong' 作为回应。如果在 N 秒内未收到,请发出错误或重新连接。
连接数限制
API KEY 维度,订阅每个 WebSocket 频道的最大连接数为 30 个。每个 WebSocket 连接都由唯一的 connId 标识。 受此限制的 WebSocket 频道如下:
- 价格频道
- k 线频道
- 交易频道
若用户通过不同的请求参数在同一个 WebSocket 连接下订阅同一个频道,只算为一次连接。若用户使用相同或不同的 WebSocket 连接订阅上述频道,例如价格频道和交易频道。在该两个频道之间,计数不会累计,因为它们被视作不同的频道。简言之,系统计算每个频道对应的 WebSocket 连接数量。 新链接订阅频道时,平台将对该订阅返回channel-conn-count的消息同步链接数量。 链接数量更新
{
"event":"channel-conn-count",
"channel":"prices",
"connCount": "2",
"connId":"abcd1234"
}
当超出限制时,一般最新订阅的链接会收到拒绝。用户会先收到平时的订阅成功信息然后收到channel-conn-count-error消息,代表平台终止了这个链接的订阅。在异常场景下平台会终止已订阅的现有链接。 链接数量限制报错
{
"event": "channel-conn-count-error",
"channel": "prices",
"connCount": "20",
"connId":"a4d3ae55"
}
通知#
WebSocket有一种消息类型(event=notice)。 用户会在如下场景收到此类信息:
- Websocket服务升级断线 在推送服务升级前30秒会推送信息,告知用户WebSocket服务即将升级。用户可以重新建立新的连接避免由于断线造成的影响。 响应示例
{
"event": "notice",
"code": "64008",
"msg": "The connection will soon be closed for a service upgrade. Please reconnect.",
"connId": "a4d3ae55"
}