我正试图设置一个插座.io使用python-socketio的服务器。
下面是一个最小的工作示例:import asyncio
from aiohttp import web
import socketio
import random
sio = socketio.AsyncServer(async_mode='aiohttp')
app = web.Application()
sio.attach(app)
@sio.on('connect')
def connect(sid, environ):
print("connected: ", sid)
@sio.on('sendText')
async def message(sid, data):
print("message ", data)
# await asyncio.sleep(1 * random.random())
# print('waited', data)
@sio.on('disconnect')
def disconnect(sid):
print('disconnect ', sid)
if __name__ == '__main__':
web.run_app(app, host='0.0.0.0', port=8080)
运行良好,我可以执行节点.js)例如
^{pr2}$
如果我运行服务器并运行上面的节点脚本,我将得到服务器端connected: c1e687f0e2724b339fcdbefdb5aaa8f8
message hey 1
message hey 2
message hey 3
但是,如果我取消了代码中await sleep行的注释,那么我只收到第一条消息:connected: 816fb6700f5143f7875b20a252c65f33
message hey 1
waited hey 1
我不明白为什么下一条消息没有出现。
一次只能运行async def message的一个实例吗?或者为什么?在
我确信我并没有理解一些非常基本的东西是如何运作的。如果有人能指出我不理解的地方,我将不胜感激。在