Flask SocketIO未将消息发送到分配的房间

时间:2020-07-14 10:21:18

标签: python flask socket.io flask-socketio

我正在构建一个应用程序,其中每个用户都加入一个链接到与其他用户共享的ID的特定房间(假设一个管理员单独连接到许多用户,但那些用户仅连接到该管理员)。我需要自动执行此操作,因此当他们注册时,我会在例如join.html:

处进行自动分配
socket.on('connect', function () {
   socket.emit('connected');
});

这叫什么:

@socketio.on('connected')
def connected():
    global user_unique_room_id
    if current_user.is_authenticated:
        rol = current_user.get_current_user_role()
        ...
        if rol == 'User':
            user_current_room = str(current_user.shared_id) + str(user_unique_room_id)
            join_room(user_current_room)
            models.User(id=current_user.id).update(
                    set__room = user_current_room)
            user_unique_room_id += 1

我正在存储房间,因此当他们发送消息时,他们确切地知道在哪里发送消息:

@routes.route('/new_message', methods=["POST"])
@login_required
def new_message():
        room = current_user.room
        socketio.emit('new_message', data, room=room)
        return jsonify(data), 202

但这不起作用。而且因为如果我这样做...

socketio.emit('new_message', data, room=None)

...它敏锐地发送了消息,我觉得join_room的{​​{1}}没有正确分配会议室,而可能只是将其分配给None。

为澄清起见,@socketio.on('connected')类似于current_user.shared_id5f0c30c6593bfe9ecb6fdab3类似于:

user_current_room

只要有帮助,这就是我的用户模型的样子:

5f0c30c6593bfe9ecb6fdab30
5f0c30c6593bfe9ecb6fdab31
5f0c30c6593bfe9ecb6fdab32
...
5f0c30c6593bfe9ecb6fdab399

我是SocketIO的新手,所以我可以肯定我做错了什么,但是我只是不知道什么。

非常感谢!

0 个答案:

没有答案