对这个含糊不清的问题道歉 - 我实际上不知道我改变了什么阻止了这个问题。
我正在使用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()
并且永远不会执行下一行的打印。
答案 0 :(得分:0)
如果您不确定使用websockets包,我建议您尝试使用Autobahn Python。我相信如果你刚开始使用websockets,它会更容易使用。
有一个完整的echo服务器示例位于here。