Flask-SocketIO 无法正常加入指定房间 rooms

新手上路,请多包涵

Hi. 我想用 Flask-SocketIO 来构建一个聊天网站……但是我却无法让用户加入指定房间:重新请求一次的话用户就不在那个房间里了。。

代码:

from flask_socketio import emit, join_room, leave_room, rooms
from ..extensions import socketio
from ..schemas import UserSchema
from ..models import User

user_schema = UserSchema()

# ...

@socketio.on("chat")
def handle_chat(msg):
    evt = msg["event"] if "event" in msg else "users"
    print(rooms())
    match evt:
        case "join":
            user = msg["user"]
            room = msg["room"]
            join_room(room["name"])
            print(room["name"])
            socketio.emit("chat", {
                "type": "newuser",
                "message": f"Welcome {user['username']} to {room['name']} !"
            }, room=room["name"])
        case "message":
            user = msg["user"]
            room = msg["room"]
            socketio.emit("chat", {
                "type": "message",
                "message": msg["msg"]
            }, room=room["name"])

console 输出:

['TzlqpgeT9B-jBnafAAAD', '测试群聊']  # Joined the user to room
测试群聊  # room name
['tjiHpwIS5xeIli8UAAAB']  # and when I send another request, room resets

谢谢!!

阅读 1.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题