关于API将新增两个Websocket订阅主题的公告
- API 公告
尊敬的用户:
自本通知生效之日起,火币Global将新增以下Websocket订阅主题 –
1) 清算后成交明细推送 trade.clearing#${symbol}
2) 账户变更推送 accounts.update#${mode}
此新增Websocket订阅主题基于全新URL“/ws/v2”以及v2.1版本签名方式。
生效日期:2019年12月4日(GMT+8)
具体变更细节及参数要求,请参考API文档:https://huobiapi.github.io/docs/spot/v1/cn/
火币全球站
2019年12月6日
以下为变更细节
接入URL
Websocket资产及订单(v2)
wss://api.huobi.pro/ws/v2
wss://api-aws.huobi.pro/ws/v2
注:api-aws.huobi.pro域名对使用aws云服务的用户做了一定的链路延迟优化。
请使用中国大陆以外的服务器访问火币 API。
数据压缩
无
心跳消息
当用户的Websocket客户端连接到火币WebSocket服务器后,服务器会定期(当前设为20秒)向其发送Ping消息并包含一整数值如下:
{
"action": "ping",
"data": {
"ts": 1575537778295
}
}
当用户的Websocket客户端接收到此心跳信息后,应返回Pong消息并包含同一整数值:
{
"action": "ping",
"data": {
"ts": 1575537778295 // 使用Ping消息中的ts值
}
}
action的有效取值
有效取值 | 取值说明 |
sub | 订阅数据 |
req | 数据请求 |
ping、pong | 心跳数据 |
push | 推送数据,服务端发送至客户端数据类型 |
鉴权
鉴权请求格式如下:
{
"action": "req",
"ch": "auth",
"params": {
"authType":"api",
"accessKey": "sffd-ddfd-dfdsaf-dfdsafsd",
"signatureMethod": "HmacSHA256",
"signatureVersion": "2.1",
"timestamp": "2019-09-01T18:16:16",
"signature": "safsfdsjfljljdfsjfsjfsdfhsdkjfhklhsdlkfjhlksdfh"
}
}
鉴权成功后返回数据格式如下:
{
"action": "req",
"code": 200,
"ch": "auth",
"data": {}
}
参数说明
字段 | 是否必需 | 数据类型 | 描述 |
action | true | string | Websocket数据操作类型,鉴权固定值为req |
ch | true | string | 请求主题,鉴权固定值为auth |
authType | true | string | 鉴权类型,鉴权固定值为api |
accessKey | true | string | API访问秘钥,您申请的API Key中的AccessKey |
signatureMethod | true | string | 签名方法,用户计算签名寄语哈希的协议,固定值为HmacSHA256 |
signatureVersion | true | string | 签名协议版本,固定值为2.1 |
timestamp | true | string | 时间戳,您发出请求的时间(UTC时间)在查询请求中包含此值有助于防止第三方截取您的请求。如:2017-05-11T16:22:06。再次强调是 (UTC 时区) |
signature | true | string | 签名, 计算得出的值,用于确保签名有效和未被篡改 |
签名步骤
v2.1版本签名与v2.0版本签名步骤相似,具体区别如下:
- 生成参与签名的字符串时,请求方法固定使用GET,请求地址固定为/ws/v2
- 生成参与签名的固定参数名替换为:accessKey,signatureMethod,signatureVersion,timestamp
- signatureVersion版本升级为2.1
v2版本签名步骤,您可以点击 这里 获取。
签名前最后生成的字符串如下:
GET\n
api.huobi.pro\n
/ws/v2\n
accessKey=0664b695-rfhfg2mkl3-abbf6c5d-49810&signatureMethod=HmacSHA256&signatureVersion=2.1×tamp=2019-12-05T11%3A53%3A03
订阅主题
成功建立与Websocket服务器的连接后,Websocket客户端发送如下请求以订阅特定主题:
{
"action": "sub",
"ch": "accounts.update"
}
订阅成功Websocket客户端会接收到如下消息:
{
"action": "sub",
"code": 200,
"ch": "accounts.update#0",
"data": {}
}
请求数据
成功建立Websocket服务器的连接后,Websocket客户端发送如下请求用以获取一次性数据:
{
"action": "req",
"ch": "topic",
}
请求成功后Websocket客户端会收到如下消息:
{
"action": "req",
"ch": "topic",
"code": 200,
"data": {} // 请求数据体
}
订阅清算后成交明细trade.clearing#${symbol}
清算后成交明细包含了交易手续费以及交易手续费抵扣等信息,仅当用户订单成交时推送。
请求参数 | 数据类型 | 描述 |
symbol | string | 交易代码(支持通配符”*”) |
数据更新字段列表
字段名称 | 数据类型 | 描述 |
symbol | string | 交易代码 |
orderId | long | 订单ID |
tradePrice | string | 成交价 |
tradeVolume | string | 成交量 |
orderSide | string | 订单方向,有效值: buy, sell |
orderType | string | 订单类型,有效值: buy-market, sell-market,buy-limit,sell-limit,buy-ioc,sell-ioc,buy-limit-maker,sell-limit-maker,buy-stop-limit,sell-stop-limit |
aggressor | bool | 是否交易主动方,有效值: true, false |
tradeId | long | 交易ID |
tradeTime | long | 成交时间,unix time in millisecond |
transactFee | string | 交易手续费 |
feeDeduct | string | 交易手续费抵扣 |
feeDeductType | string | 交易手续费抵扣类型,有效值: ht,point |
订阅
{
"action": "sub",
"ch": "trade.clearing#btcusdt"
}
订阅响应:
{
"action": "sub",
"code": 200,
"ch": "trade.clearing#btcusdt",
"data": {}
}
数据推送:
{
"ch": "trade.clearing#btcusdt",
"data": {
"symbol": "btcusdt",
"orderId": 99998888,
"tradePrice": "9999.99",
"tradeVolume": "0.96",
"orderSide": "buy",
"aggressor": true,
"tradeId": 919219323232,
"tradeTime": 998787897878,
"transactFee": "19.88",
" feeDeduct ": "0",
" feeDeductType": ""
}
}
订阅账户资产变更accounts.update#${mode}
用户可选择以下任一账户变更推送的触发方式 –
- 仅在账户余额发生变动时推送;
- 在账户余额发生变动或可用余额发生变动时均推送,且分别推送。
请求参数 | 数据类型 | 描述 |
mode | integer | 推送方式,有效值:0, 1,默认值:00:仅当账户余额变动时推送1:在账户余额发生变动或可用余额发生变动时均推送且分别推送 |
订阅示例 –
- 不填mode:
accounts.update
仅当账户余额变动时推送;
- 填写mode=0:
accounts.update#0
仅当账户余额变动时推送;
- 填写mode=1:
accounts.update#1
在账户余额发生变动或可用余额发生变动时均推送且分别推送。
数据更新字段列表
字段名称 | 数据类型 | 描述 |
currency | string | 币种 |
accountId | long | 账户ID |
balance | string | 账户余额(仅当账户余额发生变动时推送) |
available | string | 可用余额(仅当可用余额发生变动时推送) |
changeType | string | 余额变动类型,有效值:order-place(订单创建),order-match(订单成交),order-refund(订单成交退款),order-cancle(订单撤销),order-fee-refund(点卡抵扣交易手续费),margin-transfer(杠杆账户划转),margin-loan(借贷本金),margin-interest(借贷计息),margin-repay(归还借贷本金利息),other(其他资产变化) |
accountType | string | 账户类型,有效值:trade, frozen, loan, interest |
changeTime | long | 余额变动时间,unix time in millisecond |
订阅
{
"action": "sub",
"ch": "accounts.update"
}
订阅响应:
{
"action": "sub",
"code": 200,
"ch": "accounts.update#0",
"data": {}
}
数据推送:
accounts.update#0:
{
"action": "push",
"ch": "accounts.update#0",
"data": {
"currency": "btc",
"accountId": 123456,
"balance": "23.111",
"changeType": "transfer",
"accountType":"trade",
"changeTime": 1568601800000
}
}
accounts.update#1:
{
"action": "push",
"ch": "accounts.update#1",
"data": {
"currency": "btc",
"accountId": 33385,
"available": "2028.699426619837209087",
"changeType": "order.match",
"accountType":"trade",
"changeTime": 1574393385167
}
}
{
"action": "push",
"ch": "accounts.update#1",
"data": {
"currency": "btc",
"accountId": 33385,
"balance": "2065.100267619837209301",
"changeType": "order.match",
"accountType":"trade",
"changeTime": 1574393385122
}
}