我正在寻找一种将用户信息保留在python aiohttp WebSocket处理程序中的好方法,这样我就可以将其传递给我用来在每次收到新消息时调用它们时处理请求的方法。
似乎有几种方法可以做到这一点,但是它们似乎不是为WebSocket连接创建的,而是将其存储为会话数据以供HTTP处理程序重构状态。我看过将值保留在“请求”和“应用”键中,但它们似乎不合适。
我想做这件事的另一种方法是在处理程序中保留一个变量来维护信息(字典或自定义对象),但不确定这是否是个好主意。
例如(伪代码):
async def websocket_handler(self, request):
ws = web.WebSocketResponse(protocols=('wss'))
await ws.prepare(request)
user = None
async for msg in ws:
if msg.data == 'connect:ID':
user = User(data=msg.data)
elif msg.data == 'close':
await ws.close()
else:
message_processor(user, msg.data)
return ws
任何想法都会有所帮助。