# Websocket

# 简介

接入URL: wss://sock.xyt.com/ws

心跳消息

当用户的Websocket客户端连接到XYTWebsocket服务器后,服务器会定期(当前设为30秒)向其发送ping消息并包含当前时间的时间戳,如下:

{ data: { time: 1586249815378 }, send: "ping" }

当用户的 Websocket客户端接收到此心跳消息后,应返回pong消息并包含当前时间的时间戳,如下:

{ send: "pong", data: 1586249814687 }

注意:当Websocket 服务器连续发送了ping消息五分钟后却没有收到任何一次pong消息返回后,服务器将主动断开与此客户端的连接。

订阅主题

成功建立与Websocket服务器的连接后,Websocket客户端发送如下请求以订阅特定主题

{ subscribe: 主题名, data: { 参数1:参数值, 参数2:参数值,...... } }

示例:

{ subscribe: "contractScale", data: { symbol: "btcusdt", scene: "REAL", type: "MIN_1" } }

响应值示例:

{
  data: {
    a: 0
    c: 10678.3
    h: 10678.3
    i: 1601364600
    l: 10678.3
    n: "REAL"
    o: 10678.3
    s: "btcusdt"
    t: "MIN_1"
    v: 0
  }
  send: "contractScale"
}

取消订阅

取消订阅格式如下:

{ unsubscribe: 主题名, data: { 参数1:参数值,参数2:参数值,...... } }

示例:

 { unsubscribe: "contractScale", data: { symbol: "btcusdt", scene: "REAL", type: "MIN_1" } }

# 合约深度订阅

示例:

{ subscribe: "contractDepth", data: { symbol: "ltcusdt", scene: "REAL", type: 0, size: 1000 } }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
symbol 币对名称
scene 场景(REAL:实际,VIRTUAL:虚拟)
type 深度档位(默认值:0)
size 数量默认值:100(10, 20, 50, 100, 200, 1000)

响应值示例:

{
  "data": {
    "a": [[45.54, 3.2, 1], [45.55, 10.1, 1]],
    "b": [[45.53, 3, 1], [45.51, 3.1, 1]],
    "n": "REAL",
    "s": "ltcusdt"
  },
  "send": "contractDepth"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
a data 卖出:价格,数量,条数 array
b data 买入:价格,数量,条数 array
n data 场景(REAL:实际,VIRTUAL:虚拟) string
s data 币对名称 string
send 订阅主题名称 string

# 合约最新成交订阅

示例:

{ subscribe: "contractNewTrade", data: { symbol: "ltcusdt", scene: "REAL" } }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
symbol 币对名称
scene 场景(REAL:实际,VIRTUAL:虚拟)

响应值示例:

{
  "data": {
    "l": [{
        "d": 1601366810000,
        "e": "SELL",
        "i": "20200929160650TC5F72EB1A4E4BB67ADF7298CF",
        "p": 45.53,
        "v": 0.2
    }],
    "n": "REAL",
    "s": "btcusdt"
  },
  "send": "newTrade"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
d l 创建时间 date
e l 交易方向(开仓:BUY开多, SELL开空; 平仓:BUY平空, SELL平多) string
i l id string
p l 价格 float
v l 数量 float
n data 场景(REAL:实际,VIRTUAL:虚拟) string
s data 币对名称 string
send 订阅主题名称 string

# 24小时行情订阅

示例:

{subscribe: "contractTicker", data: {scene: "REAL"}}

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
scene 场景(REAL:实际,VIRTUAL:虚拟)

响应值示例:

{
  "data": [{
    "a": 83549772.051,
    "b": 10717.9,
    "c": null,
    "e": 10718,
    "f": -0.000216,
    "h": 10914.9,
    "i": 10720.27,
    "j": -1.4,
    "l": 10649.2,
    "m": 10718.87,
    "n": "REAL",
    "o": 10902.9,
    "p": 10717.9,
    "r": null,
    "s": "btcusdt",
    "t": 1601308800000,
    "v": 7760.31
  }],
  "send": "contractTicker"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
a data 成交额 float
b data 买一价格 float
c data 引用指数价格 float
e data 卖一价格 float
f data 资金费率 float
h data 最高价 float
i data 指数价格 float
j data 合理基差 float
l data 最低价 float
m data 标记价格 float
n data 场景(REAL:实际,VIRTUAL:虚拟) string
o data 开盘价 float
p data 当前价 float
r data 引用指数代号 string
s data 币对 string
t data 日期 date
v data 成交量 float
send 订阅主题名称 string

# 合约单个币对行情订阅

示例:

{subscribe: "contractSymbolTicker", data: {symbol: "btcusdt", scene: "REAL"}}

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
symbol 币对名称
scene 场景(REAL:实际,VIRTUAL:虚拟)

响应值示例:

{
  "data": {
    "a": 83549772.051,
    "b": 10717.9,
    "c": null,
    "e": 10718,
    "f": -0.000216,
    "h": 10914.9,
    "i": 10720.27,,
    "j": -1.4,
    "l": 10649.2,
    "m": 10718.87,
    "n": "REAL",
    "o": 10902.9,
    "p": 10717.9,
    "r": null,
    "s": "btcusdt",
    "t": 1601308800000,
    "v": 7760.31
  },
  "send": "contractSymbolTicker"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
a data 成交额 float
b data 买一价格 float
c data 引用指数价格 float
e data 卖一价格 float
f data 资金费率 float
h data 最高价 float
i data 指数价格 float
j data 合理基差 float
l data 最低价 float
m data 标记价格 float
n data 场景(REAL:实际,VIRTUAL:虚拟) string
o data 开盘价 float
p data 当前价 float
r data 引用指数代号 string
s data 币对 string
t data 日期 date
v data 成交量 float
send 订阅主题名称 string

# 合约价 K 线订阅

示例:

{ subscribe: "contractScale", data: {symbol: "btcusdt", type: "MIN_1", scene: "REAL"} }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
symbol 币对名称
type K线类型(MIN_1:一分钟,MIN_5:五分钟,MIN_15:十五分钟,MIN_30:三十分钟,HOUR_1:一小时,HOUR_4:四小时,DAY_1:一天,WEEK_1:一周,MONTH_1:一个月)
scene 场景(REAL:实际,VIRTUAL:虚拟)

响应值示例:

{
  "data": {
    "a": 0,
    "c": 10736.5,
    "h": 10736.5,
    "i": 1601370720,
    "l": 10736.5,
    "n": "REAL",
    "o": 10736.5,
    "s": "btcusdt",
    "t": "MIN_1",
    "v": 0
  },
  "send": "contractScale"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
a data 成交额 float
c data 收盘价 float
h data 最高价 float
i data id String
l data 最低价 float
n data 场景(REAL:实际,VIRTUAL:虚拟) String
o data 开盘价 float
s data 币对名称 String
t data K 线类型 String
v data 交易量 float
send 订阅主题名称 string

# 指数价 K 线订阅

示例:

{ subscribe: "indexScale", data: {symbol: "btcusdt", type: "MIN_1"} }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
symbol 币对名称
type K线类型(MIN_1:一分钟,MIN_5:五分钟,MIN_15:十五分钟,MIN_30:三十分钟,HOUR_1:一小时,HOUR_4:四小时,DAY_1:一天,WEEK_1:一周,MONTH_1:一个月)

响应值示例:

{
  "data": {
    "c": 10740.73,
    "h": 10740.73,
    "i": 1601371320,
    "l": 10740.73,
    "o": 10740.73,
    "s": "btcusdt",
    "t": "MIN_1"
  },
  "send": "indexScale"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
c data 收盘价 float
h data 最高价 float
i data id String
l data 最低价 float
o data 开盘价 float
s data 币对名称 String
t data K 线类型 String
send 订阅主题名称 string

# 标记价 K 线订阅

示例:

{ subscribe: "markScale", data: {symbol: "btcusdt", type: "MIN_1", scene: "REAL"} }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
symbol 币对名称
type K线类型(MIN_1:一分钟,MIN_5:五分钟,MIN_15:十五分钟,MIN_30:三十分钟,HOUR_1:一小时,HOUR_4:四小时,DAY_1:一天,WEEK_1:一周,MONTH_1:一个月)
scene 场景(REAL:实际,VIRTUAL:虚拟)

响应值示例:

{
  "data": {
    "c": 10728.25,
    "h": 10730.23,
    "i": null,
    "l": 10727.98,
    "n": "REAL",
    "o": 10730.23,
    "s": "btcusdt",
    "t": "MIN_1"
  },
  "send": "markScale"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
c data 收盘价 float
h data 最高价 float
i data id String
l data 最低价 float
n data 场景(REAL:实际,VIRTUAL:虚拟) String
o data 开盘价 float
s data 币对名称 String
t data K 线类型 String
send 订阅主题名称 string

# 保证金账户订阅

示例:

{ subscribe:"margin", data: { "token": "Token", "memberId": 100094 } }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
token token
memberId 用户ID

响应值示例:

{
  "data":{
    "m": 100094,
    "b": "STD",
    "n": "REAL",
    "c": "USDT",
    "a": 2722401.0612728773,
    "o": 469539.5047,
    "p": 7839338.2017,
    "r": 1.3276,
    "i": 8747.087028101838,
    "f": 0
  },
  "send": "margin"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
m data 用户ID integer
b data 合约板块编码 String
n data 场景(REAL:实际,VIRTUAL:虚拟) String
c data 币种 String
a data 可用保证金 float
o data 委托(冻结)保证金 float
p data 仓位(占用)保证金 float
r data 保证金率 float
i data 盈亏 float
f data 手续费 float
send 订阅主题名称 string

# 合约订单订阅

示例:

{ subscribe:"contractOrder", data: { "token": "Token", "memberId": 100094 } }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
token token
memberId 用户ID

响应值示例:

{
  "data": {
    "board": "STAND",
    "coin": "USDT",
    "createdDate": 1601372619000,
    "currentVolume": null,
    "date": 1601372619308,
    "dealAmount": null,
    "dealPrice": null,
    "dealVolume": null,
    "id": "CT202009291743395F7301CB50F35B256BDC5FA8",
    "lossPrice": null,
    "makerFeeRate": null,
    "margin": 10716.7,
    "marginDiscount": 1,
    "memberId": 100094,
    "multiplier": 10,
    "passive": null,
    "positionId": null,
    "positionSide": "ENTRY",
    "price": 10716.7,
    "profitPrice": null,
    "pushed": null,
    "quantity": 10,
    "referencePrice": null,
    "referenceSymbol": null,
    "roleCode": "STAND_1",
    "scene": "REAL",
    "side": "SELL",
    "size": 1,
    "source": "WEB",
    "symbol": "btcusdt",
    "takerFeeRate": null,
    "tradeCount": null,
    "type": "LIMIT",
    "updatedDate": 1601372619000,
    "volume": 10
  },
  "send": "contractOrder"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
board data 合约板块编码 string
coin data 结算币种 string
createdDate data 创建时间 date
currentVolume data 当前数量 float
date data 生效时间 date
dealAmount data 成交金额 float
dealPrice data 平均成交价 float
dealVolume data 成交数量 float
id data 订单id string
lossPrice data 止损价 float
makerFeeRate data 挂单方手续费率 float
margin data 保证金 float
marginDiscount data 保证金折扣 float
memberId data 用户id integer
multiplier data 杠杆倍数 integer
passive data 是否强平(true:启用,false:禁用) boolean
positionSide data 仓位方向(ENTRY:开仓, EXIT:平仓) string
positionId data 仓位ID string
price data 价格 float
profitPrice data 止盈价 float
pushed data 是否推送(true:启用,false:禁用) boolean
quantity data 手数 float
referenceSymbol data 引用指数代号 string
referencePrice data 指数价 float
roleCode data 角色编码 string
scene data 场景(REAL:实际,VIRTUAL:虚拟) string
side data 交易方向(开仓:BUY开多, SELL开空; 平仓:BUY平空, SELL平多) string
size data 合约面值 float
source data 来源(WEB,H5,APP,API) string
symbol data 币对 string
takerFeeRate data 吃单方手续费率 float
tradeCount data 交易次数 long
type data 订单类型(LIMIT限价, MARKET市价, STOP突破价, PROFIT_LOSS止盈止损) string
updatedDate data 修改时间 date
volume data 数量 float

# 仓位信息订阅

示例:

{ subscribe:"position", data: { "token": "Token", "memberId": 100094 } }

请求数据描述如下:

节点名称(关键字) 描述 必填
subscribe 订阅的主题名称
token token
memberId 用户ID

响应值示例:

{
  "data":{
    "board": "STAND",
    "coin": "USDT",
    "createdDate": 1601372619000,
    "currentId": "202009291743393375F7301CB0BDD2737CB64A2A7",
    "entryAmount": null,
    "entryFee": null,
    "entryMargin": 190.7769,
    "entryPrice": null,
    "entryVolume": 0.89,
    "exitAmount": null,
    "exitFee": null,
    "exitMargin": null,
    "exitPrice": null,
    "exitReferencePrice": null,
    "exitVolume": null,
    "fee": null,
    "id": "CT202009291742475F73019750F35B256BDC5F59",
    "margin": 190.7769,
    "memberId": 100094,
    "multiplier": 50,
    "orderVolume": 0.89,
    "passive": null,
    "price": 10717.8,
    "profit": null,
    "referenceSymbol": null,
    "roleCode": null,
    "scene": "REAL",
    "side": "BUY",
    "symbol": "btcusdt",
    "updatedDate": null,
    "volume": 0.89
  },
  "send": "position"
}

响应值描述如下:

节点名称(关键字) 父节点 描述 类型
board data 合约板块编码 string
coin data 结算货币 string
createdDate data 创建时间 date
currentId data 仓位记录ID string
entryAmount data 开仓金额 float
entryFee data 开仓手续费 float
entryMargin data 开仓保证金 float
entryPrice data 开仓均价 float
entryVolume data 开仓数量 float
exitAmount data 平仓金额 float
exitFee data 平仓手续费 float
exitMargin data 平仓保证金 float
exitPrice data 平仓均价 float
exitReferencePrice data 总平均指数价格(平仓) float
exitVolume data 平仓数量 float
fee data 持仓占用手续费 float
id data 仓位ID string
margin data 保证金 float
memberId data 用户ID integer
multiplier data 杠杆倍数 integer
orderVolume data 委托数量 float
passive data 是否强平(true:是,false否) boolean
price data 当前开仓均价 float
profit data 盈亏 float
referenceSymbol data 引用指数代号 string
roleCode data 角色编码 string
scene data 场景(REAL:实际,VIRTUAL:虚拟) string
side data 交易方向(开仓:BUY开多, SELL开空; 平仓:BUY平空, SELL平多) string
symbol data 币对 string
updatedDate data 修改时间 date
volume data 成交数量 float