Skip to content
Snippets Groups Projects
Commit e0219e84 authored by Patrick Jentsch's avatar Patrick Jentsch
Browse files

Preliminary work for better socket.io event handling.

parent d2919090
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,7 @@ from ..models import User
'''
' A list containing session ids of connected Socket.IO sessions, to keep track
' A list containing session ids of Socket.IO sessions, to keep track
' of all connected sessions, which can be used to determine the runtimes of
' associated background tasks.
'''
......@@ -22,21 +22,22 @@ sessions = []
def socketio_connect():
'''
' The Socket.IO module creates a session id (sid) for each request.
' On connect the sid is saved in the connected sessions list.
' On connect the sid is saved in the sessions list.
'''
sessions.append(request.sid)
return {'code': 200, 'msg': 'OK'}
@socketio.on('disconnect')
def socketio_disconnect():
'''
' On disconnect the session id gets removed from the connected sessions
' list.
' On disconnect the session id gets removed from the sessions list.
'''
try:
sessions.remove(request.sid)
except ValueError:
pass
return {'code': 200, 'msg': 'OK'}
@socketio.on('start_user_session')
......@@ -58,18 +59,15 @@ def socketio_start_user_session(user_id):
join_room(room)
@socketio.on('stop_user_session')
@socketio.on('users.request')
@socketio_login_required
def socketio_stop_user_session(user_id):
def socketio_start_session(user_id):
user = User.query.get(user_id)
if user is None:
response = {'code': 404, 'msg': 'Not found'}
socketio.emit('stop_user_session', response, room=request.sid)
elif not (user == current_user or current_user.is_administrator):
response = {'code': 403, 'msg': 'Forbidden'}
socketio.emit('stop_user_session', response, room=request.sid)
else:
response = {'code': 200, 'msg': 'OK'}
socketio.emit('stop_user_session', response, room=request.sid)
room = 'user_{}'.format(user.id)
leave_room(room)
response = {'code': 200, 'msg': 'OK', 'payload': user.to_dict()}
join_room('users.{}'.format(user.id))
return response
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment