Не удается подключиться к веб-сокету Binance. Я получаю: WebSocketBadStatusException: состояние рукопожатия 400 Плохой запрос - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь подключиться к потоку веб-сокетов Binance. Следуя их документации Я использую приведенный ниже код для установления sh соединения:

from websocket import create_connection

ws = create_connection('wss://fstream.binance.com/')

При его запуске я получаю следующую ошибку:

WebSocketBadStatusException: Handshake status 400 Bad Request

Я не смог найти в Интернете никакой информации об этой ошибке.

Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Вам не хватает пути при подключении через веб-сокет!

Ознакомьтесь с документами api binance: https://binance-docs.github.io/apidocs/futures/en/#websocket -market-streams

python - binance не поддерживает конечные точки фьючерсов на websocket, поэтому вы можете использовать вместо этого unicorn-binance-websocket-api, вот пример для будущих конечных точек: https://github.com/oliver-zehentleitner/unicorn-binance-websocket-api/blob/master/example_binance_futures.py

0 голосов
/ 23 февраля 2020

Вы можете установить python -binance и использовать BinanceSocketManager

python -m pip install python -binance

Используйте следующий код, который я нашел здесь

import time
from binance.client import Client # Import the Binance Client
from binance.websockets import BinanceSocketManager # Import the Binance Socket Manager

# Although fine for tutorial purposes, your API Keys should never be placed directly in the script like below. 
# You should use a config file (cfg or yaml) to store them and reference when needed.
PUBLIC = '<YOUR-PUBLIC-KEY>'
SECRET = '<YOUR-SECRET-KEY>'

# Instantiate a Client 
client = Client(api_key=PUBLIC, api_secret=SECRET)

# Instantiate a BinanceSocketManager, passing in the client that you instantiated
bm = BinanceSocketManager(client)

# This is our callback function. For now, it just prints messages as they come.
def handle_message(msg):
    print(msg)

# Start trade socket with 'ETHBTC' and use handle_message to.. handle the message.
conn_key = bm.start_trade_socket('ETHBTC', handle_message)
# then start the socket manager
bm.start()

# let some data flow..
time.sleep(10)

# stop the socket manager
bm.stop_socket(conn_key)
...