在执行以下代码时,没有得到Binance api的响应,这里有什么我可能错过的吗?
import json
import websocket
socket='wss://fstream.binance.com/ws'
def on_open(ws):
print("opened")
subscribe_message = {
"method": "SUBSCRIBE",
"params":
[
"ACCOUNT_UPDATE"
],
"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()
发布于 2022-05-24 18:05:59
我发现了这个问题。问题是,您应该从不同的http服务器为现货和期货帐户请求listen_key。供现场使用:
def get_listen_key_by_REST(binance_api_key):
url = ' https://api.binance.com/api/v1/listenKey'
response = requests.post(url, headers={'X-MBX-APIKEY': binance_api_key})
json = response.json()
return json['listenKey']
比你应该订阅的:
wss://stream.binance.com:9443/stream?streams=<listen_key>/btcbusd@bookTicker/...
期货:
def get_listen_key_by_REST(binance_api_key):
url = ' https://fapi.binance.com/fapi/v1/listenKey'
response = requests.post(url, headers={'X-MBX-APIKEY': binance_api_key})
json = response.json()
return json['listenKey']
比你应该订阅的:
wss://fstream.binance.com/stream?streams=<listen_key>/btcbusd@aggTrade/...
这两个服务器给您的监听键是相同的,但是如果您从错误的服务器请求它,则订阅将无法工作。
发布于 2022-04-12 05:54:30
用这个base_url为我工作
wss://stream.binancefuture.com/ws/<listen_key>
发布于 2022-05-19 21:49:01
我也有同样的问题。显然,Ali代码无法工作,因为他没有插入listen键。
然而,我尝试过:
socket3=f"wss://fstream-auth.binance.com/ws/L4ToFWpcpnvlGnEZhEbSQi2Gg8oLmQXSvpc2AArMybGW2ZeZkBspYjnQiOSq"
或
socket5=f"wss://stream.binancefuture.com/ws/L4ToFWpcpnvlGnEZhEbSQi2Gg8oLmQXSvpc2AArMybGW2ZeZkBspYjnQiOSq“
但没有效果..。我尝试过在订阅消息和没有订阅消息的情况下:
subscribe_message = {
"method": "SUBSCRIBE",
"params":
[
"ACCOUNT_UPDATE"
],
"id": 1
}
再一次一事无成。我非常希望看到我的期货帐户使用默认的 python。如果您只想看到您的期货账户二进制库正在为我工作:
import asyncio
from binance.client import AsyncClient
from binance.streams import BinanceSocketManager
import api_store
async def main():
client = await AsyncClient.create(api_store.api_key_binance,
api_store.api_secret_binance)
bm = BinanceSocketManager(client)
# start any sockets here, i.e a trade socket
#ts = bm.user_socket()
ts = bm.futures_user_socket()#-за фючърсният срийм или за спот стрийма
# then start receiving messages
async with ts as tscm:
while True:
res = await tscm.recv()
print(res)
await client.close_connection()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
https://stackoverflow.com/questions/68333058
复制相似问题