这是在 this question 的回答中提出的,但我想专门向一位新人询问此事。
如何在不使用上下文管理器的情况下连接到 websocket?当实际调用需要使用 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
方法。
最佳答案
用途:
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()
请记住,上下文管理器通常可以为您提供帮助:您可能希望更改代码以使用它们,而不是绕过它们。
关于python - 如何在上下文管理器之外打开 websocket 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942754/