update commander
This commit is contained in:
parent
39e26f96dd
commit
b618c68c2f
119
commander.html
119
commander.html
@ -3,11 +3,11 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>MBC rc bootjes - commander</title>
|
<title>MBC rc boatjes - commander</title>
|
||||||
<style>
|
<style>
|
||||||
* {
|
* {
|
||||||
--background: #000000;
|
--background: #000000;
|
||||||
--background-second: #444444;
|
--background-second: #222222;
|
||||||
--foreground: #CCCCCC;
|
--foreground: #CCCCCC;
|
||||||
}
|
}
|
||||||
body {
|
body {
|
||||||
@ -29,22 +29,123 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="login">
|
<div class="login">
|
||||||
<h1>Login</h1>
|
<input id="pass" type="password" value="1234" />
|
||||||
<input type="password" />
|
<button id="login">login</button>
|
||||||
</div>
|
</div>
|
||||||
<main>
|
<main>
|
||||||
<div id="bootjes"></div>
|
<div id="boatjes"></div>
|
||||||
<div id="clients"></div>
|
<div id="clients"></div>
|
||||||
</main>
|
</main>
|
||||||
<script>
|
<script>
|
||||||
var bootjes = document.getElementById('bootjes');
|
const passEl = document.getElementById('pass');
|
||||||
var clients = document.getElementById('clients');
|
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)
|
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>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
32
recever.py
32
recever.py
@ -10,7 +10,8 @@ BOAT_STATE_AVAILABLE = 0
|
|||||||
BOAT_STATE_LOCKED = -1
|
BOAT_STATE_LOCKED = -1
|
||||||
|
|
||||||
boats = [
|
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 = []
|
clients = []
|
||||||
@ -33,7 +34,7 @@ def sendData(data):
|
|||||||
|
|
||||||
async def echoBoats(client):
|
async def echoBoats(client):
|
||||||
global boats
|
global boats
|
||||||
data = ""
|
data = "boats:"
|
||||||
for boat in boats:
|
for boat in boats:
|
||||||
if (boat['state'] != BOAT_STATE_LOCKED):
|
if (boat['state'] != BOAT_STATE_LOCKED):
|
||||||
data += str(boat['id']) + ";" + str(boat['name']) + ";"
|
data += str(boat['id']) + ";" + str(boat['name']) + ";"
|
||||||
@ -45,11 +46,20 @@ async def echoBoats(client):
|
|||||||
|
|
||||||
async def echoLockedBoats(client):
|
async def echoLockedBoats(client):
|
||||||
global boats
|
global boats
|
||||||
data = ""
|
if (client['id'] == adminId):
|
||||||
for boat in boats:
|
data = "lockedBoats:"
|
||||||
if (boat['state'] == BOAT_STATE_LOCKED):
|
for boat in boats:
|
||||||
data += str(boat['id']) + ";" + str(boat['name']) + ";locked:"
|
if (boat['state'] == BOAT_STATE_LOCKED):
|
||||||
await client['ws'].send(data + '\n')
|
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):
|
async def onMessage(message, client):
|
||||||
global boats
|
global boats
|
||||||
@ -76,17 +86,21 @@ async def onMessage(message, client):
|
|||||||
else:
|
else:
|
||||||
print("something else: '" + data[1] + "'")
|
print("something else: '" + data[1] + "'")
|
||||||
|
|
||||||
def newClient(message, ws):
|
async def newClient(message, ws):
|
||||||
message = message.split(';')
|
message = message.split(';')
|
||||||
client = { "id": message[0], "boat": None, "ws": ws }
|
client = { "id": message[0], "boat": None, "ws": ws }
|
||||||
print("new client connected: " + client['id'])
|
print("new client connected: " + client['id'])
|
||||||
clients.append(client)
|
clients.append(client)
|
||||||
|
if (client['id'] == adminId):
|
||||||
|
await echoBoats(client)
|
||||||
|
await echoLockedBoats(client)
|
||||||
|
await echoClients(client)
|
||||||
return client
|
return client
|
||||||
|
|
||||||
async def run(ws, path):
|
async def run(ws, path):
|
||||||
client = None
|
client = None
|
||||||
async for message in ws:
|
async for message in ws:
|
||||||
client = newClient(message, ws)
|
client = await newClient(message, ws)
|
||||||
if (client is not None):
|
if (client is not None):
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user