Flask:在没有 Cookies 的情况下存储 Socket-Connection 变量

Flask: Storing Socket-Connection variables without Cookies

我需要 'variables and activity associated with each client' 不使用 cookie。我如何以及在哪里可以存储这些变量?我对烧瓶和服务器还很陌生。 现在,我想到了使用 python 字典并存储 sessionID 变量对,如下所示。 我觉得这是一个愚蠢的想法,但我想不出替代方案:/。 希望,你能帮助我。

import flask  

app = Flask(__name__)
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
enter code heresocketio = SocketIO(app)

cache = {}

@app.route('/')
def index():
    return send_from_directory('static', "index.html")

@socketio.on('savePseudonym')
def sendKeepAlive(): 
    cache[(request.sid,'pseudonym')]= pseudonym
    cache[(request.sid,'time')]= time

if __name__ == "__main__":
    socketio.run(app, debug=True)

您可以使用 session,其使用方式大致与 Flask 路由相同。

from flask import session

@socketio.on('savePseudonym')
def sendKeepAlive(): 
    session['pseudonym'] = pseudonym
    session['time'] = time

唯一要记住的是,因为 Socket.IO 会话不是基于 cookie,所以您在 Socket.IO 处理程序中对会话所做的任何更改都不会出现在 Flask 会话 cookie 上.如果您需要在 Flask 路由和 Socket.IO 事件处理程序之间共享会话,那么您可以使用带有 Flask-Session 扩展的服务器端会话。