49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
import json
|
|
|
|
from flask import request
|
|
from flask_socketio import emit
|
|
|
|
from objects.display import Display, Window, Tab
|
|
from objects import glob
|
|
|
|
from helpers import uuid, connection
|
|
|
|
@glob.websocket.on_error_default # handles all namespaces without an explicit error handler
|
|
def default_error_handler(e):
|
|
print("ERR:", e)
|
|
return 500
|
|
|
|
@glob.websocket.on("connect")
|
|
def ws_connect():
|
|
connection.connect(request.sid)
|
|
return "hi"
|
|
|
|
@glob.websocket.on("disconnect")
|
|
def ws_disconnect():
|
|
connection.disconnect(request.sid)
|
|
|
|
@glob.websocket.on("display")
|
|
def ws_display(data):
|
|
def handle_list(_):
|
|
return [ item.serialize() for item in glob.displays.values() ]
|
|
|
|
def handle_new(_):
|
|
display = Display.generate()
|
|
return display.serialize()
|
|
|
|
def handle_connect(data):
|
|
uuid = data["uuid"]
|
|
if uuid not in glob.displays.keys():
|
|
raise Exception("Display not found")
|
|
|
|
glob.displays[uuid].attach(request.sid)
|
|
#print(dir(request))
|
|
#print(request.sid)
|
|
#print("TODO")
|
|
|
|
switch = {
|
|
"list": handle_list,
|
|
"new": handle_new,
|
|
"connect": handle_connect
|
|
}
|
|
return switch.get(data["action"])(data) |