线程化,非阻塞的websocket客户端

线程化,非阻塞的websocket客户端,第1张

线程化,非阻塞的websocket客户端

在他们的github页面上有一个例子可以做到这一点。好像您是从该示例开始的,并从 on_open中每秒 发送一次消息的代码并在 run_forever
调用之后粘贴了该 代码 ,BTW一直运行到套接字断开连接为止。

也许您在这里对基本概念有疑问。总会有一个专用于侦听套接字的线程(在这种情况下,主线程在 run_forever
内部进入循环以等待消息)。如果您想进行其他 *** 作,则需要另一个线程。

下面是示例代码的不同版本,其中不是使用主线程作为“套接字侦听器”,而是创建了另一个线程,并在 其中 运行 run_forever
。我认为它有点复杂,因为您可以编写代码来确保套接字可以连接,同时可以使用 on_open 回调,但这也许可以帮助您理解。

import websocketimport threadingfrom time import sleepdef on_message(ws, message):    print messagedef on_close(ws):    print "### closed ###"if __name__ == "__main__":    websocket.enableTrace(True)    ws = websocket.WebSocketApp("ws://echo.websocket.org/", on_message = on_message, on_close = on_close)    wst = threading.Thread(target=ws.run_forever)    wst.daemon = True    wst.start()    conn_timeout = 5    while not ws.sock.connected and conn_timeout:        sleep(1)        conn_timeout -= 1    msg_counter = 0    while ws.sock.connected:        ws.send('Hello world %d'%msg_counter)        sleep(1)        msg_counter += 1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5165744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存