问题描述
我无法理解以下代码为何不起作用。用户登录后,我想根据该用户的电子邮件创建一个房间。我尝试了两种不同的方法。首先,我尝试调用join或join_room,但这两个都不起作用。当我尝试socketio.join(email)
时,出现一个错误,指出socketio没有联接,而当我尝试socketio.join_room(email)
时,我也遇到了一个错误。
@app.route("/login",methods=["GET","POST"])
def login():
...
if userisloggedin:
socketio.join(email) # OR socketio.join_room(email)
@app.route("/login","POST"])
def login():
...
if userisloggedin:
socketio.emit("privatemsg",email,namespace="/messages")
@socketio.on("privatemsg",namespace="/messages")
def gotMessage(email):
print("JJJJJJJ")
socketio.join_room(email)
解决方法
您需要配置客户端以接收privatemsg
发射事件,然后将其发射回服务器,但回调函数最能达到此目的
@app.route("/login",methods=["GET","POST"])
def login():
...
if userisloggedin:
socketio.emit("privatemsg",email,callback=gotMessage,namespace="/messages")
def gotMessage(email):
print("JJJJJJJ")
socketio.join_room(email)
在您的客户端上执行此操作:
var socket = io();
socket.on('privatemsg',(email,gotMessage) => {
gotMessage(email);
});