У меня есть приложение, которое подключается к веб-сокету и время от времени получает от него некоторую информацию. В некоторых случаях может случиться, что мое приложение ничего не получит в течение относительно длительного времени. В этом случае я могу заподозрить, что веб-сокет "умер". Тем не менее, это также может быть случай, когда веб-сокету просто не нужно ничего отправлять, и мне просто нужно подождать дольше.
Итак, в таких ситуациях я не хочу догадываться, в чем причина задержка. Я просто хочу «активно» спросить веб-сокет, жив ли он еще. Я узнал, что это можно сделать с помощью «ping», но я не уверен, как именно это работает.
Например, я могу сделать следующее:
pong_waiter = await ws.ping()
Но что я должен делать с этим объектом? Я думаю, мне нужно увидеть строку "pong", когда веб-сокет жив, но где я могу его увидеть? Что возвращает эту строку?
ДОБАВЛЕНО
Если я выполню:
pong_waiter = await ws.ping()
await pong_waiter
Я ничего не получил. После этого я также выполняю:
pong_waiter.result()
Это также ничего не возвращает. Но я знаю, какой веб-сокет жив (я все еще получаю информацию от него).
ДОБАВЛЕНО 2
Если я выполню:
pong_waiter
Я получу:
<Future finished result=None>
Итак, где же «понг»?