什么之后挂在websocket.recv()上?

时间:2016-06-26 02:14:07

标签: python websocket python-asyncio

对这个含糊不清的问题道歉 - 我实际上不知道我改变了什么阻止了这个问题。

我正在使用Websockets在Python上开发文本冒险引擎(开源项目)。 这与asyncio和websockets模块一起工作正常。我把东西移动了一下,现在它在接收输入时挂起。

我说谎了 - 它从来没有奏效。但是,这段代码确实有效:

#!/usr/bin/python3

import asyncio
import websockets
import time

async def hello(websocket, path):
    while True:
        name = await websocket.recv()
        print("< {}".format(name))

        greeting = ''.join(name + "... " for x in range(5))
        await websocket.send(greeting)
        print("> {}".format(greeting))

        time.sleep(0.1);

start_server = websockets.serve(hello, '', 26231)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

我的代码(不起作用的代码)可在相应的GitHub仓库中找到:

https://github.com/KernelDeimos/mmota-server/issues/1

稍后当我有时间时,我会为我的客户端添加一个存储库并链接到这里,虽然它是非常基本的(在工作提交和破坏之间没有对客户端进行任何更改)。

客户端连接到localhost:26231并发送我输入的消息(例如:“echo”)

服务器发送回消息 - 或者至少应该发送消息。

不幸的是,服务器挂起了这行server.py:

data = await self.websocket.recv()

并且永远不会执行下一行的打印。

1 个答案:

答案 0 :(得分:0)

如果您不确定使用websockets包,我建议您尝试使用Autobahn Python。我相信如果你刚开始使用websockets,它会更容易使用。

有一个完整的echo服务器示例位于here