本人自学python水平有限,耗费3天时间调试成功了这个websocket接口。实在是官方文档没有python实现的demo,网络上又根本搜索不到相关信息,自己硬生生琢磨出来的。全当抛砖引玉,请各位看官指点。
以下内容属于最小可行性版本,功能逐步扩展:
import gzip
import json
import websocket
import ssl
import base64
class order_maker:
def __init__(self):
# 初始化Websocket
# 墙内外修改这里
depth_address = "wss://push.bibox365.com/" # 墙内地址
# depth_address = "wss://push.bibox.com/" # 墙外地址
websocket.enableTrace(True)
self.ws = websocket.WebSocketApp(depth_address,
on_message=self.on_message,
on_error=self.on_error,
on_close=self.on_close)
self.ws.on_open = self.on_open
# 初始化bibox接口
self.bibox_service = websocket.WebSocketApp('access key',
'secret key',
'https://api.bibox365.com')
# 启动ws
def run(self):
# 墙内外修改这里
# self.ws.run_forever() # 直接连接
self.ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE}) # sslopt={"cert_reqs": ssl.CERT_NONE}禁用ssl证书验证
# self.ws.run_forever(http_proxy_host='xxx.xxx.xxx.xx', http_proxy_port=xxxx) # 设置墙外代理ip地址和端口
# WebSocket回调函数
# ---------------------------------------------------------------------
def on_message(self, message):
msg = json.loads(message[1:-2]) # str转换成dict
msg = base64.b64decode(msg['data']) # 解码BASE64
msg = gzip.decompress(msg).decode("utf-8") # gzip解码
print(msg)
if 'kline' in message:
print('订阅历史数据')
# 自己实现功能
# ……
if 'depth' in message:
print('订阅市场深度行情')
# 自己实现功能
# ……
def on_error(self, error):
print("Websocket连接错误,%s" % (e