Flask-Socketio 会话返回最后一个值
Posted
技术标签:
【中文标题】Flask-Socketio 会话返回最后一个值【英文标题】:Flask-Socketio Session returning last value 【发布时间】:2021-12-14 16:16:24 【问题描述】:服务器端
@app.route('/login',methods=['GET','POST'])
def login():
if request.method == 'POST':
if Users.is_user(request.form['username'],request.form['password']):
name = Users.get_name(request.form['username'])
session['name'] = name
return redirect(url_for('home'))
else:
return redirect(url_for('login'))
return render_template("login.html",**'session':session)
@app.route('/get_name',methods=['GET'])
def get_name():
data = 'name' : ''
if NAME_KEY in session:
data = 'name':session['name']
return jsonify(data)
客户端
async function get_Name()
return fetch("/get_name")
.then(function (response)
return response.json();
)
.then(function (text)
return text["name"];
);
socket.on('message', async function(msg)
let user_name = await get_Name();
$("#messages").append('<li>'+user_name+':'+msg+'</li>');
console.log('Received message');
);
);
当最后一个用户登录时,所有用户的用户名都会更改为最后一个用户名。但在日志中,我可以看到 session['name'] 是特定于登录用户的。
【问题讨论】:
【参考方案1】:$('#sendbutton').on('click', async function()
var user_name = await get_Name();
var msg = $('#myMessage').val()
var data =
'name': user_name,
'msg' : msg
;
socket.emit('message',data);
$('#myMessage').val('');
);
我使用 emit 发送包含发送消息的用户名称的数据,然后通过 python 中的 emit 函数再次将其发送到 javascript。
【讨论】:
以上是关于Flask-Socketio 会话返回最后一个值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Flask-SocketIO 修复此 KeyError 错误?