diff --git a/labthings/server/labthing.py b/labthings/server/labthing.py index 30c48cc9..7796d9fa 100644 --- a/labthings/server/labthing.py +++ b/labthings/server/labthing.py @@ -10,6 +10,7 @@ from .spec.utilities import get_spec from .spec.td import ThingDescription from .decorators import tag +from .sockets import Sockets from .views.extensions import ExtensionList from .views.tasks import TaskList, TaskView @@ -29,7 +30,8 @@ def __init__( description: str = "", version: str = "0.0.0", ): - self.app = app + self.app = app # Becomes a Flask app + self.sockets = None # Becomes a Socket(app) websocket handler self.components = {} @@ -103,6 +105,10 @@ def init_app(self, app): # Create base routes self._create_base_routes() + # Create socket handler + self.sockets = Sockets(app) + self._create_base_sockets() + def teardown(self, exception): pass @@ -123,6 +129,14 @@ def _create_base_routes(self): self.add_root_link(TaskList, "tasks") self.add_view(TaskView, "/tasks/", endpoint=TASK_ENDPOINT) + def _create_base_sockets(self): + self.sockets.add_url_rule("/", self._socket_handler) + + def _socket_handler(self, ws): + while not ws.closed: + message = ws.receive() + ws.send("Web sockets not yet implemented") + # Device stuff def add_component(self, device_object, device_name: str): diff --git a/labthings/server/sockets.py b/labthings/server/sockets.py index a5135eb7..e0390b23 100644 --- a/labthings/server/sockets.py +++ b/labthings/server/sockets.py @@ -74,15 +74,15 @@ def init_app(self, app): app.wsgi_app = SocketMiddleware(app.wsgi_app, app, self) def route(self, rule, **options): - def decorator(f): + def decorator(view_func): endpoint = options.pop("endpoint", None) - self.add_url_rule(rule, endpoint, f, **options) - return f + self.add_url_rule(rule, view_func, **options) + return view_func return decorator - def add_url_rule(self, rule, _, f, **options): - self.url_map.add(Rule(rule, endpoint=f)) + def add_url_rule(self, rule, view_func, **options): + self.url_map.add(Rule(rule, endpoint=view_func)) def register_blueprint(self, blueprint, **options): """