我有一个应用程序订阅了一个websocket,它不时地从中接收一些信息。在某些情况下,我的应用程序可能会相对较长时间内没有接收到任何信息。在这种情况下,我可能会怀疑websocket已经“死亡”。但是,也可能是websocket没有任何东西可发送,我只需要等待更长时间。
因此,在这种情况下,我不想猜测延迟的原因。我只想“积极”询问websocket是否仍然活着。我了解到可以用“ping”来做到这一点,但我不确定具体如何操作。
例如,我可以执行以下操作:
它也没有返回任何东西。但我知道什么是Web Socket在连接状态(我仍然从中获取信息)。
添加2: 如果我执行:
因此,在这种情况下,我不想猜测延迟的原因。我只想“积极”询问websocket是否仍然活着。我了解到可以用“ping”来做到这一点,但我不确定具体如何操作。
例如,我可以执行以下操作:
pong_waiter = await ws.ping()
但我该如何处理这个对象呢?我猜当 WebSocket 存活时我需要看到一个 "pong" 字符串,但我在哪里能看到它呢?返回这个字符串的是什么呢?
添加
如果我执行:
pong_waiter = await ws.ping()
await pong_waiter
我什么也没得到。之后我还执行了以下命令:
pong_waiter.result()
它也没有返回任何东西。但我知道什么是Web Socket在连接状态(我仍然从中获取信息)。
添加2: 如果我执行:
pong_waiter
I get:
<Future finished result=None>
那么,“pong”在哪里呢?
0xA
的控制帧,可选择跟随有效载荷。 - Robby Cornelissenpong_waiter
Future
成功完成的事实表明,你已经收到了一个 pong 控制帧作为对你的 ping 控制帧的响应。 - Robby Cornelissen