我有一个订阅网络套接字的应用程序,有时会从中接收一些信息。在某些情况下,我的应用程序可能会在相当长的时间内没有收到任何东西。在这种情况下,我可能会怀疑网络套接字已“死亡”。但是,也可能是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_waiter
从Future
result()
获取它。关于python - 如何使用Python Websockets库获取“pong”调用上的“ping”响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60540890/