Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask SocketIO将消息从服务器发送到房间_Python_Flask_Flask Socketio - Fatal编程技术网

Python Flask SocketIO将消息从服务器发送到房间

Python Flask SocketIO将消息从服务器发送到房间,python,flask,flask-socketio,Python,Flask,Flask Socketio,在我的应用程序中,我需要客户端加入房间,这样它就可以从我的服务器接收消息 服务器代码 @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) @ap

在我的
应用程序中
,我需要
客户端
加入
房间
,这样它就可以
从我的
服务器
接收消息

服务器代码

@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;
        });
网页加载后,我立即将
“场馆1”
输入名为
“加入”
网页表单

服务器
侧的
变量
房间
也设置为
“场馆1”

问题是,当我调用
API
/scan/user/..
时,我的
客户端上没有显示任何内容。但是,

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

确实正确显示。

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

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


如果不提供名称空间,将使用默认名称空间。

正确。答复客户端发送的事件时,将从客户端事件获取命名空间。当服务器是启动器时,该上下文不存在,因此必须提供名称空间。