如何使用 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()
来获取它。
我有一个订阅网络套接字的应用程序,并且不时地从它接收一些信息。在某些情况下,我的应用程序可能会在相对较长的时间内没有收到任何东西。在那种情况下,我可能怀疑网络套接字有 "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()
来获取它。