update commander
This commit is contained in:
parent
39e26f96dd
commit
b618c68c2f
119
commander.html
119
commander.html
@ -3,11 +3,11 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>MBC rc bootjes - commander</title>
|
||||
<title>MBC rc boatjes - commander</title>
|
||||
<style>
|
||||
* {
|
||||
--background: #000000;
|
||||
--background-second: #444444;
|
||||
--background-second: #222222;
|
||||
--foreground: #CCCCCC;
|
||||
}
|
||||
body {
|
||||
@ -29,22 +29,123 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="login">
|
||||
<h1>Login</h1>
|
||||
<input type="password" />
|
||||
<input id="pass" type="password" value="1234" />
|
||||
<button id="login">login</button>
|
||||
</div>
|
||||
<main>
|
||||
<div id="bootjes"></div>
|
||||
<div id="boatjes"></div>
|
||||
<div id="clients"></div>
|
||||
</main>
|
||||
<script>
|
||||
var bootjes = document.getElementById('bootjes');
|
||||
var clients = document.getElementById('clients');
|
||||
const passEl = document.getElementById('pass');
|
||||
const loginEl = document.getElementById('login');
|
||||
const boatjesEl = document.getElementById('boatjes');
|
||||
const clientsEl = document.getElementById('clients');
|
||||
|
||||
var connection = new WebSocket('ws://' + "10.254.0.1" + ':8080/', ['mbcRcRf']);
|
||||
// const serverURL = 'ws://10.254.0.1:8080/';
|
||||
const serverURL = 'ws://localhost:8080/';
|
||||
|
||||
var conn = new WebSocket(serverURL, ['mbcRcRf']);
|
||||
|
||||
loginEl.addEventListener('click', login)
|
||||
|
||||
function login(e)
|
||||
{
|
||||
conn.close();
|
||||
conn = new WebSocket(serverURL, ['mbcRcRf']);
|
||||
conn.addEventListener('open', onOpen);
|
||||
conn.addEventListener('message', onMessage);
|
||||
}
|
||||
|
||||
function onOpen(e)
|
||||
{
|
||||
conn.send(passEl.value);
|
||||
}
|
||||
|
||||
function onMessage(e)
|
||||
{
|
||||
console.log("recive: ", e.data);
|
||||
let msg = e.data.split(':')
|
||||
let data = msg[0];
|
||||
msg.splice(0, 1);
|
||||
msg = msg.join(':');
|
||||
switch (data)
|
||||
{
|
||||
case 'boats':
|
||||
addBoats(msg);
|
||||
passEl.parentElement.style.display = 'none';
|
||||
break;
|
||||
case 'clients':
|
||||
addClients(msg);
|
||||
break;
|
||||
default:
|
||||
console.warn('onMessage(): invlid data type (' + data + ')');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function reqBoats()
|
||||
{
|
||||
conn.send(passEl.value + ";boats");
|
||||
}
|
||||
|
||||
function addBoats(boats)
|
||||
{
|
||||
boats = boats.split(':');
|
||||
for (let boat in boats)
|
||||
{
|
||||
if (boats[boat] != "")
|
||||
{
|
||||
addBoat(boats[boat]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addBoat(boat)
|
||||
{
|
||||
boat = boat.split(':')
|
||||
boat = boat.split(';')
|
||||
if (boat.length == 3)
|
||||
{
|
||||
let boatEl = document.createElement("div");
|
||||
boatEl.className = "boat";
|
||||
boatEl.dataset['id'] = boat[0];
|
||||
boatEl.dataset['availible'] = boat[2];
|
||||
boatEl.innerText = boat[1];
|
||||
boatjesEl.append(boatEl);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.warn("addBoat(): incorect number of args (" + boat.length.toString() + "; " + boat.toString() + ")");
|
||||
}
|
||||
}
|
||||
|
||||
function addClients(clients)
|
||||
{
|
||||
clients = clients.split(':');
|
||||
for (let client in clients)
|
||||
{
|
||||
if (clients[client] != "")
|
||||
{
|
||||
addClient(clients[client]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addClient(client)
|
||||
{
|
||||
client = client.split(';')
|
||||
if (client.length == 2)
|
||||
{
|
||||
let clientEl = document.createElement("div");
|
||||
clientEl.className = "client";
|
||||
clientEl.dataset['id'] = client[0];
|
||||
clientEl.innerText = client[0] + " controlls " + client[1];
|
||||
clientsEl.append(clientEl);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.warn("addBoat(): incorect number of args (" + client.length.toString() + "; " + client.toString() + ")");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
32
recever.py
32
recever.py
@ -10,7 +10,8 @@ BOAT_STATE_AVAILABLE = 0
|
||||
BOAT_STATE_LOCKED = -1
|
||||
|
||||
boats = [
|
||||
{ "id": 0, "name": "test boat", "state": BOAT_STATE_AVAILABLE }
|
||||
{ "id": 0, "name": "test boat", "state": BOAT_STATE_AVAILABLE },
|
||||
{ "id": 1, "name": "varent object", "state": BOAT_STATE_AVAILABLE }
|
||||
]
|
||||
|
||||
clients = []
|
||||
@ -33,7 +34,7 @@ def sendData(data):
|
||||
|
||||
async def echoBoats(client):
|
||||
global boats
|
||||
data = ""
|
||||
data = "boats:"
|
||||
for boat in boats:
|
||||
if (boat['state'] != BOAT_STATE_LOCKED):
|
||||
data += str(boat['id']) + ";" + str(boat['name']) + ";"
|
||||
@ -45,11 +46,20 @@ async def echoBoats(client):
|
||||
|
||||
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')
|
||||
if (client['id'] == adminId):
|
||||
data = "lockedBoats:"
|
||||
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 echoClients(client):
|
||||
global clients
|
||||
if (client['id'] == adminId):
|
||||
data = "clients:"
|
||||
for client in clients:
|
||||
data += str(client['id']) + ";" + str(client['boat']) + ":"
|
||||
await client['ws'].send(data + '\n')
|
||||
|
||||
async def onMessage(message, client):
|
||||
global boats
|
||||
@ -76,17 +86,21 @@ async def onMessage(message, client):
|
||||
else:
|
||||
print("something else: '" + data[1] + "'")
|
||||
|
||||
def newClient(message, ws):
|
||||
async def newClient(message, ws):
|
||||
message = message.split(';')
|
||||
client = { "id": message[0], "boat": None, "ws": ws }
|
||||
print("new client connected: " + client['id'])
|
||||
clients.append(client)
|
||||
if (client['id'] == adminId):
|
||||
await echoBoats(client)
|
||||
await echoLockedBoats(client)
|
||||
await echoClients(client)
|
||||
return client
|
||||
|
||||
async def run(ws, path):
|
||||
client = None
|
||||
async for message in ws:
|
||||
client = newClient(message, ws)
|
||||
client = await newClient(message, ws)
|
||||
if (client is not None):
|
||||
break
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user