Flask SocketIO send a message from the server to the room

In my app I need a client to join the room so that it can send receive messages from my server .

Server code

 @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) 

Client code

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

Once the webpage loads, enter "venue_1" into the webpage form called "join" .

variable room on the server side is also set to "venue_1" .

The problem is that when I call the API /scan/user/... , nothing appears on my client . Nevertheless,

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

displayed correctly.

+7
python flask flask-socketio
source share
1 answer

I think you need to specify a namespace parameter for your emit in the API call, since you defined the namespace.

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

If you do not specify a namespace, you will use the default value.

+4
source share

All Articles