在 python 上正确关闭 websocket
Properly closing websocket on python
我在 python 上使用 websockets 库在自定义线程中创建 websockets 服务器:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
async def listener(websocket, path):
async for message in websocket:
self.onMessage.emit(message)
self._server=websockets.serve(listener, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(self._server)
asyncio.get_event_loop().run_forever()
print("Finished...")
现在我想彻底停止此服务器,但似乎遗漏了什么。从文档中,他们声明要关闭服务器,我唯一要做的就是使用这样的东西(这是从主线程调用的自定义线程 class 中的一个函数):
def stop(self):
self._server.ws_server.close()
self._server.ws_server.wait_closed();
但从未打印 "Finished..." 文本。
我是不是误解了文档什么的?
干杯。
好吧,玩了一会儿之后我完成了使用这个的全新安装:
async def _internalStop(self):
self._server.ws_server.close()
await self._server.ws_server.wait_closed()
self._eventLoop.stop();
while(self._eventLoop.is_running()):
time.sleep(0.5)
self._eventLoop.close();
self._eventLoop=None;
我在 python 上使用 websockets 库在自定义线程中创建 websockets 服务器:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
async def listener(websocket, path):
async for message in websocket:
self.onMessage.emit(message)
self._server=websockets.serve(listener, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(self._server)
asyncio.get_event_loop().run_forever()
print("Finished...")
现在我想彻底停止此服务器,但似乎遗漏了什么。从文档中,他们声明要关闭服务器,我唯一要做的就是使用这样的东西(这是从主线程调用的自定义线程 class 中的一个函数):
def stop(self):
self._server.ws_server.close()
self._server.ws_server.wait_closed();
但从未打印 "Finished..." 文本。
我是不是误解了文档什么的?
干杯。
好吧,玩了一会儿之后我完成了使用这个的全新安装:
async def _internalStop(self):
self._server.ws_server.close()
await self._server.ws_server.wait_closed()
self._eventLoop.stop();
while(self._eventLoop.is_running()):
time.sleep(0.5)
self._eventLoop.close();
self._eventLoop=None;