我正在构建一个应用程序,其中每个用户都加入一个链接到与其他用户共享的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_id
。
5f0c30c6593bfe9ecb6fdab3
类似于:
user_current_room
只要有帮助,这就是我的用户模型的样子:
5f0c30c6593bfe9ecb6fdab30
5f0c30c6593bfe9ecb6fdab31
5f0c30c6593bfe9ecb6fdab32
...
5f0c30c6593bfe9ecb6fdab399
我是SocketIO的新手,所以我可以肯定我做错了什么,但是我只是不知道什么。
非常感谢!