Flask SocketIO 从服务器发送消息到房间
Flask SocketIO send message from server to room
在我的 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"
输入到名为 "join"
的 webpage form
中。
server
这边的variable
room
也设置为"venue_1"
。
问题是当我调用 API
/scan/user/...
时,我的 client
上什么也没有出现。然而,
emit('my response', {'data': 'Entered the room ' + message['room']}, room=room)
显示正确。
我认为您需要在 API 调用中为您的发射提供一个命名空间参数,因为您已经定义了一个命名空间。
socketio.emit('my response', {'data': json.dumps(my_info, ensure_ascii=False)}, room=room, namespace='/test')
如果您不提供命名空间,您将使用默认命名空间。
在我的 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"
输入到名为 "join"
的 webpage form
中。
server
这边的variable
room
也设置为"venue_1"
。
问题是当我调用 API
/scan/user/...
时,我的 client
上什么也没有出现。然而,
emit('my response', {'data': 'Entered the room ' + message['room']}, room=room)
显示正确。
我认为您需要在 API 调用中为您的发射提供一个命名空间参数,因为您已经定义了一个命名空间。
socketio.emit('my response', {'data': json.dumps(my_info, ensure_ascii=False)}, room=room, namespace='/test')
如果您不提供命名空间,您将使用默认命名空间。