通过websocket问题进行币流交易

时间:2020-05-01 22:33:22

标签: python api websocket binance

执行以下代码时,Binance api没有任何响应,我在这里可能会错过任何内容吗?我需要创建一个帐户才能通过api获取流数据吗?

import json
import websocket

socket='wss://stream.binance.com:9443'

def on_open(ws):
    print("opened")
    subscribe_message = {
        "method": "SUBSCRIBE",
        "params":
        [
         "btcusdt@trade",
         "btcusdt@depth"
         ],
         "id": 1
         }

    ws.send(json.dumps(subscribe_message))

def on_message(ws, message):
    print("received a message")
    print(json.loads(message))     

def on_close(ws):
    print("closed connection")        

ws = websocket.WebSocketApp(socket, on_open=on_open, on_message=on_message, on_close=on_close)
ws.run_forever()

2 个答案:

答案 0 :(得分:3)

为了使您的代码正常工作,您只需在 websocket url 的末尾添加 /ws

socket = 'wss://stream.binance.com:9443/ws'

答案 1 :(得分:0)

我看到的是,您没有使用主机名和端口后面的路径!

请参阅此处缺少的内容: https://github.com/binance-exchange/binance-official-api-docs/blob/master/web-socket-streams.md#general-wss-information

在/ ws / streamName>中访问原始流

在/ stream?streams = streamName1 / streamName2 / streamName3处访问组合流

如果要通过websocket.send()订阅流,则必须先创建一个合并的流,然后发送有效负载以订阅流。

但是您不必重新发明轮子。 python有多种现成的实现。

我建议您我写过这个库:https://github.com/oliver-zehentleitner/unicorn-binance-websocket-api

这将为您节省很多工作:)

最好的问候, 奥利弗