from bottle import route, get, static_file, run from bottle.ext.websocket import GeventWebSocketServer from bottle.ext.websocket import websocket from os.path import join as pathjoin from statemachine import DialingState import threading class WebDialingState(DialingState): def __init__(self, controller): super().__init__(controller) def on_nummernschalter_input(self, num): print("calling super method") super().on_nummernschalter_input(num) print("local method got num: " + str(num)) class FeTapWeb(): def __init__(self, config, statemachine_controller): self.config = config self.controller = statemachine_controller self.config = {"host": "0.0.0.0", "port": 8080} self.websockets = [] route("/")(self.root) get("/ws", apply=[websocket])(self.ws_connect) route('/')(self.statics) pass def root(self): return "

Hello world!

" def publish_status(self): if isinstance(self.controller.state, DialingState): self.controller.state = WebDialingState(self.controller) print("dialing") for ws in self.websockets: ws.send("this is a message triggered from the server") return "ok" def ws_connect(self, ws): self.websockets.append(ws) while True: data = ws.receive() if data != None: print(data) else: break self.websockets.remove(ws) def statics(self, path): return static_file(path, root="./webinterface") def start(self): self.__running = True w = threading.Thread(target=self.__webthread) w.start() def __webthread(self): run(host=self.config["host"], port=self.config["port"], server=GeventWebSocketServer)