65 lines
1.2 KiB
Python
65 lines
1.2 KiB
Python
#!/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())
|
|
|