#python #websocket
#python #websocket
Вопрос:
У меня есть сервер (Bootstrap Java), который обслуживает websockets. Я пытаюсь использовать библиотеку python websockets для создания платформы тестирования интеграции, но я не знаком с python asyncio, поэтому я думаю, что совершаю некоторые ошибки для начинающих!
Я создал свой websocket с
async def __async_connect(self, address):
print("opening websocket on ", address)
self.ws = await websockets.connect(address)
def open_connection(self, address, firmware_version="103"):
if self.ws is None:
loop = asyncio.get_event_loop()
loop.run_until_complete(self.__async_connect(address))
и может отправлять / получать сообщения.
Однако, когда сервер решает закрыть websocket, клиент python продолжает работать и даже отправляет ему сообщения с
сообщение = ожидает self.ws.send(json.dumps (сообщение))
Я тестировал с использованием расширения chrome websocket client, которое правильно определяет, что сервер закрыл соединение. Я также протестировал с помощью ping_interval= None, чтобы увидеть, были ли пинги, поддерживающие соединение, но это не так. Я что-то упускаю, что позволило бы python обнаружить, что сервер закрыл соединение? Я неправильно закрываю веб-сокеты, несмотря на то, что как расширение Chrome, так и websocket-client смогли обнаружить закрытие?
Комментарии:
1. Попробуйте найти какой-нибудь пример с использованием функций on_connect и on_close. Это может помочь.
2. Вот оно: pypi.org/project/websocket_client
3. Привет @Raxodius — спасибо за быстрый ответ, но на самом деле это другая библиотека. Я использую библиотеку python «websockets», которая основана на asyncio. К сожалению, с библиотекой, которую вы связали, был ряд проблем, в том числе то, что она не поддерживала python 3.8 .
4. Так что, может быть, попробуйте написать функцию типа: сервер отправляет какое-то сообщение при закрытии, клиент ищет это сообщение и когда оно появляется, оно само закрывается. Самое простое решение, которое приходит мне на ум.
5. Вы пробовали это: websockets.readthedocs.io/en/stable /…