#!/usr/bin/env python import asyncio from websockets.server import serve adminId = "1234" BOAT_STATE_INCTRL = 1 BOAT_STATE_AVAILABLE = 0 BOAT_STATE_LOCKED = -1 boats = [ { "id": 0, "name": "test boat", "state": BOAT_STATE_AVAILABLE } ] clients = [] def onCMD(data): global boats, adminId print("command:" + str(data)) if (len(data) != 4): return if (data[1] != adminId): return boot = int(data[2]) if (boot >= 0 and boot <= 3): boats[boot] = data[3] print(boats) def sendData(data): global boats print("data to send: " + str(data)) def onMessage(message): global boats data = message.split(':') if(data[0] == "cmd"): onCMD(message) else: for boat in boats: if(data[0] == boat): sendData(data) break def newClient(message, ws): print("new client connected: " + message) return None async def run(ws, path): client = {} async for message in ws: client = newClient(message, ws) if (client is None): return async for message in ws: onMessage(message, client) async def main(): async with serve(run, "0.0.0.0", 8080): await asyncio.Future() asyncio.run(main())