我有一个订阅网络套接字的应用程序,有时会从中接收一些信息。在某些情况下,我的应用程序可能会在相当长的时间内没有收到任何东西。在这种情况下,我可能会怀疑网络套接字已“死亡”。但是,也可能是Web-socket没有任何要发送的东西,我只需要等待更长的时间。

因此,在这种情况下,我不想猜测延迟的原因是什么。我只想“主动”询问网络套接字是否仍然存在。我了解到可以使用“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>

那么,“乒乓球”在哪里?

最佳答案

如果要等待await,则应使用pong:

pong_waiter = await ws.ping()
await pong_waiter

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

关于python - 如何使用Python Websockets库获取“pong”调用上的“ping”响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60540890/

10-13 08:10