首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -如何使用websocket客户端发送心跳?

Python -如何使用websocket客户端发送心跳?
EN

Stack Overflow用户
提问于 2021-01-17 22:32:14
回答 2查看 2.3K关注 0票数 1

服务器要求客户端每30秒发送一次心跳,以保持连接正常。如何使用python websocket-客户端库来实现这一点?

代码语言:javascript
复制
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()之后没有代码运行。我怎样才能发送信息?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-24 08:06:57

在库文档中有一个长期存在的连接示例。为您的用例修改它,它应该如下所示。我用了28秒的心跳,因为你说30秒是预期的持续时间。如果这是关键的话,我会用14秒来使它对网络问题更加健壮。

代码语言:javascript
复制
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()
票数 0
EN

Stack Overflow用户

发布于 2022-08-12 14:39:05

run_forever()方法有ping_interval参数。例如,

代码语言:javascript
复制
ws.run_forever(ping_interval=14)

可以用来自动发送“ping”命令,每一个指定的时间段(在这里,是14秒)。

您还可以使用ping_timeout,这是一个超时(以秒为单位),如果没有收到乒乓消息。

更多详细信息见websocket docs:forever#

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65766687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档