如何使用 Python websockets 库在 "ping" 调用中获得 "pong" 响应?

How to get the "pong" response on "ping" call using Python websockets library?

我有一个订阅网络套接字的应用程序,并且不时地从它接收一些信息。在某些情况下,我的应用程序可能会在相对较长的时间内没有收到任何东西。在那种情况下,我可能怀疑网络套接字有 "died"。但是,也可能是 web-socket 没有任何可发送的情况,我只需要等待更长的时间。

所以,在这种情况下,我不想猜测延迟的原因是什么。我只想 "actively" 询问网络套接字是否还活着。我知道可以用 "ping" 来完成,但我不确定它是如何工作的。

例如我可以执行以下操作:

pong_waiter = await ws.ping()

但是我应该如何处理这个对象?我想当网络套接字处于活动状态时我需要看到一个 "pong" 字符串,但我在哪里可以看到它? return 这个字符串是什么意思?

已添加

如果我执行:

pong_waiter = await ws.ping()
await pong_waiter

我什么都没得到。之后我也执行:

pong_waiter.result()

它也return没什么。但我知道什么网络套接字是活的(我仍在从中获取信息)。

添加 2

如果我执行:

pong_waiter

我得到:

<Future finished result=None>

那么,"pong" 在哪里?

如果您想等待pong,您应该await它:

pong_waiter = await ws.ping()
await pong_waiter

如果您希望 pong 包含自定义负载,您很可能可以在 pong_waiter Future 完成后通过调用 result() 来获取它。