如何阻止Python Websocket客户端“ws.run_forever”

时间:2016-08-17 11:40:30

标签: python websocket

我正在使用“ws.run_forever”启动我的Python Websocket,另一个source表示我应该使用“run_until_complete()”,但这些函数似乎只对Python asyncio可用。

如何停止websocket客户端?或者如何在没有永远运行的情况下启动它。

3 个答案:

答案 0 :(得分:11)

在python websockets中,你可以使用“ws.keep_running = False”来阻止“永远运行”的websocket。

这可能有点不直观,你可以选择另一个可以更好地运作的图书馆。

以下代码对我有用(使用ws.keep_running = False)。

class testingThread(threading.Thread):
    def __init__(self,threadID):
        threading.Thread.__init__(self)
        self.threadID = threadID
    def run(self):
        print str(self.threadID) + " Starting thread"
        self.ws = websocket.WebSocketApp("ws://localhost/ws", on_error = self.on_error, on_close = self.on_close, on_message=self.on_message,on_open=self.on_open)
        self.ws.keep_running = True 
        self.wst = threading.Thread(target=self.ws.run_forever)
        self.wst.daemon = True
        self.wst.start()
        running = True;
        testNr = 0;
        time.sleep(0.1)
        while running:          
            testNr = testNr+1;
            time.sleep(1.0)
            self.ws.send(str(self.threadID)+" Test: "+str(testNr)+")
        self.ws.keep_running = False;
        print str(self.threadID) + " Exiting thread"

答案 1 :(得分:3)

close 上还有一个 WebSocketApp 方法,它将 keep_running 设置为 False 并关闭套接字

答案 2 :(得分:-1)

scoket = f'wss://......' # 你可以定义

def on_message(ws, message): 打印(消息)

定义 on_close(ws): 打印(“连接关闭”)

ws = websocket.WebSocketApp(scoket, on_message = on_message, on_close = on_close)

ws.run_forever()