WebSocket API简介
WebSocket协议是基于TCP的一种新的网络协议。它实现了客户端与服务器之间在单个 tcp 连接上的全双工通信,由服务器主动发送信息给客户端,减少了频繁的身份验证等不必要的开销。其最大优点有两个:
-
两方请求的 header 数据很小,大概只有2 Bytes。
-
服务器不再是被动的接到客户端的请求后才返回数据,而是有了新数据后主动推送给客户端。
以上 WebSocket 协议带来的优点使得其十分适用于数字货币行情和交易这种实时性强的接口。
WebSocket API 行情 代码示例
from websocket import create_connection import gzip import time if __name__ == '__main__': while(1): try: ws = create_connection("wss://api.huobipro.com/ws") break except: print('connect ws error,retry...') time.sleep(5) # 订阅 KLine 数据 tradeStr="""{"sub": "market.ethusdt.kline.1min","id": "id10"}""" # 请求 KLine 数据 # tradeStr="""{"req": "market.ethusdt.kline.1min","id": "id10", "from": 1513391453, "to": 1513392453}""" #订阅 Market Depth 数据 # tradeStr="""{"sub": "market.ethusdt.depth.step5", "id": "id10"}""" #请求 Market Depth 数据 # tradeStr="""{"req": "market.ethusdt.depth.step5", "id": "id10"}""" #订阅 Trade Detail 数据 # tradeStr="""{"sub": "market.ethusdt.trade.detail", "id": "id10"}""" #请求 Trade Detail 数据 # tradeStr="""{"req": "market.ethusdt.trade.detail", "id": "id10"}""" #请求 Market Detail 数据 # tradeStr="""{"req": "market.ethusdt.detail", "id": "id12"}""" 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: print(result)
注:运行前需先安装websocket_client-0.44.0-py2.py3-none-any.whl 猛戳我下载 下载后pip install websocket_client-0.44.0-py2.py3-none-any.whl