diff --git a/commander.html b/commander.html index e69de29..4758b80 100644 --- a/commander.html +++ b/commander.html @@ -0,0 +1,51 @@ + + + + + + MBC rc bootjes - commander + + + +
+

Login

+ +
+
+
+
+
+ + + \ No newline at end of file diff --git a/index.html b/index.html index 542abcc..9ea0ec5 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,7 @@ - - Mousebot - + MBC Bootjes connection.onopen = function () { - connection.send('Connect ' + (new Date())); + connection.send(clientId + ':' + (new Date())); }; connection.onerror = function (error) diff --git a/recever.py b/recever.py index 656601f..80e5818 100644 --- a/recever.py +++ b/recever.py @@ -31,30 +31,67 @@ def sendData(data): global boats print("data to send: " + str(data)) -def onMessage(message): +async def echoBoats(client): global boats - data = message.split(':') - if(data[0] == "cmd"): - onCMD(message) + data = "" + for boat in boats: + if (boat['state'] != BOAT_STATE_LOCKED): + data += str(boat['id']) + ";" + str(boat['name']) + ";" + if (boat["state"] == BOAT_STATE_AVAILABLE): + data += 'available:' + elif (boat["state"] == BOAT_STATE_INCTRL): + data += 'in:' + await client['ws'].send(data) + +async def echoLockedBoats(client): + global boats + data = "" + for boat in boats: + if (boat['state'] == BOAT_STATE_LOCKED): + data += str(boat['id']) + ";" + str(boat['name']) + ";locked:" + await client['ws'].send(data + '\n') + +async def onMessage(message, client): + global boats + data = message.replace('\n', '').split(';') + if(data[0] != client["id"]): + print("invalid id: " + str(data[0]) + " != " + str(client["id"])) else: - for boat in boats: - if(data[0] == boat): - sendData(data) - break + if (data[1] == "boats"): + await echoBoats(client) + elif(data[1] == "ctrl"): + print("controll"); + elif(data[1] == "end"): + print("end"); + elif(data[1] == "free"): + print("free"); + elif(data[1] == "lock"): + print("lock"); + elif(data[1] == "locked"): + await echoLockedBoats(client); + elif(data[1] == "kick"): + print("kick"); + elif(data[1] == "clients"): + print("clients"); + else: + print("something else: '" + data[1] + "'") def newClient(message, ws): - print("new client connected: " + message) - return None + message = message.split(';') + client = { "id": message[0], "boat": None, "ws": ws } + print("new client connected: " + client['id']) + clients.append(client) + return client async def run(ws, path): - client = {} + client = None async for message in ws: client = newClient(message, ws) - if (client is None): - return + if (client is not None): + break async for message in ws: - onMessage(message, client) + await onMessage(message, client) async def main(): async with serve(run, "0.0.0.0", 8080):