Python websocket onclose

WebSocket.onclose()在 javascript 中,当服务器关闭 websocket 连接时,我们必须做一些事情。当客户端设备关闭连接时,有没有办法在 Python 服务器中执行相同的操作?服务器是使用websockets模块本身使用该websockets.serve()方法来运行的。.Connected&都不.ConnectionClosed是属性WebSocketServerProtocol(或者错误是这样说的)。任何帮助,将不胜感激。



慕桂英4014372
浏览 181回答 1
1回答

慕婉清6462132

recv() 和 send() 都会在关闭的连接上引发 websockets.exceptions.ConnectionClosed 。在那里进行清理工作。以下是对文档中的 websocket Web 示例的轻微修改:import asyncioimport datetimeimport randomimport websocketsasync def time(websocket, path):    while True:        now = datetime.datetime.utcnow().isoformat() + "Z"        try:            await websocket.send(now)        except websockets.exceptions.ConnectionClosed:            print("Client disconnected.  Do cleanup")            break                     await asyncio.sleep(random.random() * 3)start_server = websockets.serve(time, "127.0.0.1", 5678)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()客户端示例:import asyncioimport websocketsasync def hello():    uri = "ws://localhost:5678"    count = 5    async with websockets.connect(uri) as websocket:        while count > 0:            greeting = await websocket.recv()            print(f"< {greeting}")            count = count - 1asyncio.get_event_loop().run_until_complete(hello())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python