如何永远运行异步 websocket 客户端?
Posted
技术标签:
【中文标题】如何永远运行异步 websocket 客户端?【英文标题】:How to run forever async websocket client? 【发布时间】:2019-04-19 01:07:10 【问题描述】:我正在尝试将 websocket 用于客户端。客户端发送一些开始消息,之后,无论何时发送或不发送,他都可以接收消息。客户端是异步的,我从 doc 获得了一些代码,但我不知道我的生活在做什么。
async def wsrun(uri):
async with websockets.connect(uri) as websocket:
await websocket.send('hey')
print(await websocket.recv()) # Starts receive things, not only once
asyncio.get_event_loop().run_until_complete(wsrun('wss://localhost:1515'))
问题是,websocket recv 只显示服务器发送的第一件事:(
【问题讨论】:
【参考方案1】:虽然我对你的生活无能为力,但试试这个:
async def wsrun(uri):
async with websockets.connect(uri) as websocket:
await websocket.send('hey')
while True:
print(await websocket.recv()) # Starts receive things, not only once
asyncio.get_event_loop().run_until_complete(wsrun('wss://localhost:1515'))
【讨论】:
谢谢@drum 先生。我认为它的工作原理:v。但是现在我遇到了一个问题,我正在创建一个与我的聊天集成的不和谐机器人。呜呜呜。当我“运行”不和谐时,代码挂起,所以 websocket 没有初始化,当我初始化我的 websocket 时,它手不和谐没有初始化。在另一个线程中运行异步“任务”没有意义,是吗? 算了。我设法让它工作。也再次感谢您的提示 xD以上是关于如何永远运行异步 websocket 客户端?的主要内容,如果未能解决你的问题,请参考以下文章
Tornado websocket 客户端:如何异步 on_message? (从未等待协程)
Rails WebSocket 客户端永远不会触发 OnOpen
Python 多线程服务器和与 Android 客户端的异步 websocket 通信
如何使用 boost beast websocket 客户端收听 websocket 提要?