working websocket communication for recorder states
This commit is contained in:
@@ -1,2 +1,4 @@
|
||||
# Copyright (c) 2019. Tobias Kurze
|
||||
|
||||
import backend.websocket.handlers
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import threading
|
||||
from flask_jwt_extended import verify_jwt_in_request, get_current_user, jwt_required, get_jwt_claims, get_jwt_identity
|
||||
from flask_login import current_user
|
||||
from flask_socketio import SocketIO, emit
|
||||
from jwt import ExpiredSignatureError
|
||||
|
||||
from backend import app
|
||||
|
||||
@@ -32,6 +33,9 @@ class WebSocketBase:
|
||||
debug = self.flask_app_context.debug
|
||||
socketio.run(self.flask_app_context, host=host, port=port, debug=debug)
|
||||
|
||||
def send_test_msg(self):
|
||||
socketio.emit('test', "tolle nachricht")
|
||||
|
||||
@staticmethod
|
||||
@socketio.on('connect')
|
||||
def connect_handler():
|
||||
@@ -39,16 +43,45 @@ class WebSocketBase:
|
||||
try:
|
||||
print(verify_jwt_in_request())
|
||||
print(get_jwt_identity())
|
||||
except:
|
||||
except ExpiredSignatureError:
|
||||
logger.info("user is not authenticated! Signature expired.")
|
||||
except Exception as e:
|
||||
logger.info("user is not authenticated!")
|
||||
print(str(e))
|
||||
print(type(e))
|
||||
print("not allowed!!")
|
||||
return False # not allowed here
|
||||
logger.debug("user is authenticated")
|
||||
print("allowed!")
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
@socketio.on('message')
|
||||
def handle_message(message):
|
||||
print('received message: ' + message)
|
||||
|
||||
@staticmethod
|
||||
@socketio.on('json')
|
||||
def handle_json(json):
|
||||
print('received json: ' + str(json))
|
||||
|
||||
@staticmethod
|
||||
def _request_request_recorder_status_update():
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def _test_on_msg_func():
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
@socketio.on('update_message_test_blabla')
|
||||
def handle_msg(msg=None):
|
||||
print('received msg: ' + str(msg))
|
||||
socketio.on_event('my event', WebSocketBase._test_on_msg_func, namespace='/')
|
||||
|
||||
@staticmethod
|
||||
@socketio.on_error()
|
||||
def handle_error(self, error):
|
||||
def handle_error(error):
|
||||
logger.error(error)
|
||||
print(error)
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
import json
|
||||
import logging
|
||||
|
||||
from backend.cron import recorder_checker
|
||||
from backend.websocket.base import socketio
|
||||
|
||||
logger = logging.getLogger("lrc.websocket.handlers")
|
||||
|
||||
recorder_state_checker = recorder_checker
|
||||
|
||||
|
||||
@socketio.on('request_recorder_state_updates')
|
||||
def handle_request_recorder_state_updates_msg(recorder_id=None):
|
||||
if recorder_id is None:
|
||||
logger.warning("No recorder_id communicated, ignoring!")
|
||||
return
|
||||
logger.info("Adding recorder {} to state checker".format(recorder_id))
|
||||
recorder_state_checker.add_object_to_state_check(recorder_id)
|
||||
|
||||
|
||||
@socketio.on('force_recorder_state_update')
|
||||
def handle_force_recorder_state_update_msg(recorder_id=None):
|
||||
if recorder_id is None:
|
||||
logger.warning("No recorder_id communicated, ignoring!")
|
||||
return
|
||||
|
||||
current_states = recorder_state_checker.get_current_state()
|
||||
for key in current_states:
|
||||
state = current_states[key]
|
||||
if state.get('id', None) == recorder_id:
|
||||
logger.debug("Sending state to: {}".format(
|
||||
'recorder_state_update_{}'.format(recorder_id)))
|
||||
socketio.emit('recorder_state_update_{}'.format(recorder_id),
|
||||
json.dumps(state))
|
||||
return
|
||||
logger.warning("Can't force update, no state found for recorder id {}.".format(recorder_id))
|
||||
|
||||
|
||||
def send_state_update_to_recorders(recorder_results_dict: dict):
|
||||
if len(recorder_results_dict) <= 0:
|
||||
logger.debug("Sending state of recorders via web socket... => nothing to send!")
|
||||
return
|
||||
|
||||
logger.debug("Sending state of recorders via web socket...")
|
||||
for recorder_id in recorder_results_dict:
|
||||
print(recorder_results_dict[recorder_id])
|
||||
logger.debug("Sending state to: {}".format(
|
||||
'recorder_state_update_{}'.format(recorder_results_dict[recorder_id].get('id'))))
|
||||
socketio.emit('recorder_state_update_{}'.format(recorder_results_dict[recorder_id].get('id')),
|
||||
json.dumps(recorder_results_dict[recorder_id]))
|
||||
|
||||
Reference in New Issue
Block a user