之前接了一个小单,脚本订阅k线数据如果波动过大就电话报警。
被huobi官方提供的API坑了好久,他提供的那个根本根本根本连不上!
WS是基于TCP协议,客户端发消息给服务端然后就直接开始通信,服务端可以主动发消息到客户端,因此订阅数据这种一般使用WS
WSS就是加密之后的WS。
最后是看到一个跟我一样遭遇的博主,用了火币的子站的API,具体操作和主站一样。
关于gzip解压缩和ping-pong消息的处理可以参考一下我的代码。
另外是一个字符串的骚操作#原谅我python学艺不精
while(1):
try:
ws = create_connection("wss://api.hadax.com/ws")
# hadax是huobi的子站
break
except:
print('connect ws error,retry...')
time.sleep(5)
# 订阅 KLine 数据
tradeStr="""{"sub": "market.ethusdt.kline.%s","id": "id10"}"""%(time)
#tradeStr="""{"sub": "market.ethusdt.kline.1min","id": "id10"}"""
ws.send(tradeStr)
while(1):
compressData=ws.recv()
result=gzip.decompress(compressData).decode('utf-8')
if result[:7] == '{"ping"':
ts=result[8:21]
pong='{"pong":'+ts+'}'
ws.send(pong)
ws.send(tradeStr)
else:
data = json.loads(result)
# deal with the data