Добрый день. Задача такая: есть асинхронная фунция, в которой идет работа с websocket. Сначала рукопожатие, потом отправка необходимых данных. В цикле осуществляется ожидание данных. Но для сохранения коннекта нужно посылать каждые 5 сек пинг вне зависимости от прихода данных. Т.е. в основном цикле должен быть еще один безконечный цикл, в котором через 5 сек будет посылаться пинг и этот вложенный цикл должен жить отдельной жизнью от основного цикла. Подскажите, пожалуйста, как это можно сделать? Спасибо.
P.S. print добавлены исключительно для визуализации.
Python:
async def run_websockets():
uri = "wss://site.ru/socket.io/?EIO=3&transport=websocket"
async with websockets.connect(uri, subprotocols=["websocket"], extra_headers=extra_headers) as ws:
print('--- init ---')
greeting = await ws.recv()
print(f'greeting >>> {greeting}')
print('=== greeting ===')
message = await ws.recv()
print(f'message >>> {message}')
await ws.send("broadcast1")
await ws.send("observer2")
message = await ws.recv()
print(f'message >>> {message}')
# в этом цикле необходимо реализовать идею с пингом
while True:
try:
message = await ws.recv()
print(f'message1 >>> {message}')
print('---+++---')
except websockets.exceptions.ConnectionClosedError:
print('*** ConnectionClosedError ***')
P.S. print добавлены исключительно для визуализации.