所以我正在开发一个聊天应用程序。当一个新用户注册时,应在不刷新的情况下通知上的其他用户。
所以我制作了一个表单,每当用户注册时,我都使用套接字发送用户名。我检查用户是否在数据库中,然后将用户信息发送到另一个页面。
$("#submit").click(function(){
socket.emit("register",$(".username").val())
})
问题是数据插入数据库需要时间,直到执行emit事件,并且我的检查新用户是否在数据库中总是返回none。
@socketio.on('register')
def test_connect(data):
user = Detail.query.filter_by(username=data).first()
print(user) # this always return none and emit event doesn't take place
if user:
emit("regis",user.username,broadcast=True ,include_self=False)
这里是register函数的相关部分,我在这里验证表单并插入数据。
form = RegistrationForm()
if request.method=="POST" and form.validate_on_submit():
user = Detail(username=form.username.data,email=form.email.data,password=form.password.data)
db.session.add(user)
db.session.commit()
return redirect("/signin")
是否有一种方法可以确保仅当 if request.method=="POST" and form.validate_on_submit():
返回true,以便将数据插入到数据库中,并在该发出事件发生之后插入。
我试着用这个问题在路由中发射,但它似乎不起作用,函数socket.io不执行。
如有任何建议,我们将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!