Flask SocketIO从服务器向房间发送消息

时间:2015-07-03 07:16:50

标签: python flask flask-socketio

在我的app中,我需要client加入room,以便可以receive来自server的消息。

服务器代码

@socketio.on('join', namespace='/test')
def join(message):

    join_room(message['room'])
    room = message['room']
    emit('my response', {'data': 'Entered the room ' + message['room']}, room=room)


@app.route('/scan/user/<int:user_id>/venue/<int:venue_id>', methods = ['POST'])
@auth.login_required
def scan_tablet_user_func(user_id, venue_id):

    room = 'venue_' + str(venue_id)
    socketio.emit('my response', {'data': json.dumps(my_info, ensure_ascii=False)}, room=room)

客户代码

$('form#join').submit(function(event) {
            socket.emit('join', {room: $('#join_room').val()});
            return false;
        });

加载webpage后,我会"venue_1"进入名为webpage form的{​​{1}}。

"join"一侧的variable room也设置为server

问题在于,当我致电"venue_1" API时,/scan/user/...上没有任何内容。然而,

client

确实正确显示。

1 个答案:

答案 0 :(得分:4)

我认为您需要在API调用中为您的emit提供命名空间参数,因为您已经定义了命名空间。

socketio.emit('my response', {'data': json.dumps(my_info, ensure_ascii=False)}, room=room, namespace='/test')

如果您不提供命名空间,则将使用默认命名空间。