Flask + Socketio - 如何加入路由内的房间(不在 socketio 函数内)
Flask + Socketio - How do I join a room inside a route (not inside a socketio function)
我无法理解为什么我的以下代码不起作用。当用户登录时,我想根据该用户的电子邮件创建一个房间。我尝试了两种不同的方法。首先,我尝试调用 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", methods=["GET", "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)
当用户登录时,服务器应该打印“JJJJJJJ”,但是没有出现!
您需要配置客户端以接收 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);
});
我无法理解为什么我的以下代码不起作用。当用户登录时,我想根据该用户的电子邮件创建一个房间。我尝试了两种不同的方法。首先,我尝试调用 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", methods=["GET", "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)
当用户登录时,服务器应该打印“JJJJJJJ”,但是没有出现!
您需要配置客户端以接收 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);
});