如何在python中创建一个长期的websocket连接?

时间:2016-12-09 13:24:55

标签: python websocket

我试图在python中使用websockets,之前我曾就此提出过一个问题。不过我很快意识到,我连接到服务器的方式是为了#34;一个关闭"消息,而我想做的事情需要不断地收听通知。 在python websocket client的文档中,我可以看到以下代码:

import websocket
import thread
import time

def on_message(ws, message):
    print message

def on_error(ws, error):
    print error

def on_close(ws):
    print "### closed ###"

def on_open(ws):
    def run(*args):
        for i in range(3):
            time.sleep(1)
            ws.send("Hello %d" % i)
        time.sleep(1)
        ws.close()
        print "thread terminating..."
    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()

问题是,我对python仍然很陌生,而且我不完全理解这段代码。由于它是示例代码,并且做了我不需要它的事情,我想了解它是如何工作的。例如,我不了解for循环的用途,或者底部的__name____main__是什么。

有更好的方法吗?

谢谢, 萨斯:)

1 个答案:

答案 0 :(得分:1)

for循环可能只是一个例子,因为它只会打印Hello 0Hello 1Hello 2

当Python解释器将模块作为主程序运行时,

__name__ == "__main__"是正确的,您可以阅读更多关于here.的信息。每当发生这种情况时,它会分配应该在消息,错误和当插座关闭时当它完成后,它将永远运行WebSocket。

因此,要创建自己的长期WebSocket,您可以复制此示例代码并更改on_messageon_erroron_closeon_open函数来执行您的操作希望他们在这些事件发生时做。发送消息时on_message会激活,发生错误时会on_error,WebSocket关闭时会on_close,而WebSocket会打开时会on_open