这在this question的回答中提出,但我想特别提出一个新问题。
如何使用上下文管理器连接到websocket 而不使用?在实际调用需要使用它的协程的时候,我遇到了websocket关闭的问题。
ws = websockets.connect('ws://192.168.1.32:8765')
print(ws)
给出<websockets.py35.client.Connect object at 0x0076CAD0>
而不是我使用上下文管理器获得的<websockets.client.WebSocketClientProtocol object at 0x04A91A70>
。 Connect
对象没有send
和recv
方法。
答案 0 :(得分:2)
使用:
ws = await websockets.connect('ws://192.168.1.32:8765')
您可以查看Client
的源代码,了解其如何与异步上下文管理器配合使用:
async def __aenter__(self):
self.websocket = await self
return self.websocket
要关闭连接,请使用:
await ws.close()
请注意,上下文管理员通常会帮助您:您可能希望更改代码以使用它们而不是解决它们。