Я пытаюсь отключиться от веб-сокета с помощью метода отмены подписки, но постоянно получаю одну и ту же ошибку:
Ошибка 1006 (соединение закрыто ненормально)
Это нарушает код и он перестает работать.
Я хочу иметь код, который может подписываться и отписываться от темы и продолжать работать. Я пытался объединить операцию отмены подписки с помощью try..Exception, но это не сработало. Он также не дает никакой дополнительной информации о том, как это сделать, а документация, которую я нашел, не очень полезна.
Это код, над которым я сейчас работаю:
if ws_client is not None:
try:
await ws_client.unsubscribe(topic=topic)
print("Successfully unsubscribed and closed WebSocket.")
except Exception as e:
print(f"Failed to unsubscribe: {e}")
else:
print("WebSocket client was not properly initialized.")
Может ли кто-нибудь сказать мне, почему я получаю сообщение «Успешно отписан от подписки и закрыт WebSocket», но код не работает? Как мне закрыть веб-сокет и избежать ошибки 1006?
Я оставляю здесь небольшую программу для воспроизведения проблемы:
async def main():
client = WsToken() # Assuming WsToken is initialized correctly
spot_order_book = SpotOrderbook.SpotOrderBook() # Assuming SpotOrderBook is initialized correctly
topic = '/market/level2:BTC-USDT'
print("Subscribing")
ws_client = await subscribe_to_spot_topic(client, topic, spot_order_book)
if ws_client is not None:
await asyncio.sleep(10) # Wait for 10 seconds before unsubscribing
print("Unsubscribing")
await unsubscribe_to_spot_topic(ws_client, topic)
print("Unsubscribed")
else:
print("Failed to create WebSocket client, aborting.")
async def subscribe_to_futures_topic(client, topic, order_book):
ws_client = await KucoinWsClient.create(None, client, lambda msg: deal_futures_msg(order_book, msg), private=False)
try:
await ws_client.subscribe(topic)
return ws_client
except Exception as e:
print(f"Encountered an error: {e}")
async def unsubscribe_to_spot_topic(ws_client:KucoinWsClient,topic):
if ws_client is not None:
try:
await ws_client.unsubscribe(topic=topic)
print("Successfully unsubscribed and closed WebSocket.")
except Exception as e:
print(f"Failed to unsubscribe: {e}")
else:
print("WebSocket client was not properly initialized.")
Подробнее здесь: https://stackoverflow.com/questions/784 ... y-internal