服务器要求客户端每30秒发送一次心跳,以保持连接正常。如何使用python websocket-客户端库来实现这一点?
import websocket
def on_open(ws):
pass
def on_close(ws):
pass
def on_message(ws, message):
pass
socket = "wss:// the rest of the url"
ws = websocket.WebSocketApp(socket, on_open=on_open,on_message=on_message)
ws.run_forever()在ws.run_forever()之后没有代码运行。我怎样才能发送信息?谢谢
发布于 2021-01-24 08:06:57
在库文档中有一个长期存在的连接示例。为您的用例修改它,它应该如下所示。我用了28秒的心跳,因为你说30秒是预期的持续时间。如果这是关键的话,我会用14秒来使它对网络问题更加健壮。
import websocket
try:
import thread
except ImportError:
import _thread as thread
import time
.. code removed for brevity ..
def on_open(ws):
def run(*args):
while True:
time.sleep(28)
ws.send("Ping")
thread.start_new_thread(run, ())
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()发布于 2022-08-12 14:39:05
run_forever()方法有ping_interval参数。例如,
ws.run_forever(ping_interval=14)可以用来自动发送“ping”命令,每一个指定的时间段(在这里,是14秒)。
您还可以使用ping_timeout,这是一个超时(以秒为单位),如果没有收到乒乓消息。
更多详细信息见websocket docs:forever#。
https://stackoverflow.com/questions/65766687
复制相似问题