98 lines
2.3 KiB
JavaScript
98 lines
2.3 KiB
JavaScript
var express = require("express");
|
|
var app = express();
|
|
const WebSocket = require("ws");
|
|
|
|
var last_status = {};
|
|
var last_image;
|
|
var received_picture = false;
|
|
var received_error = false;
|
|
|
|
app.use(express.static("public"));
|
|
app.use(express.json());
|
|
|
|
var ws;
|
|
var api_connected = false;
|
|
|
|
var connect_to_api = function () {
|
|
console.log("Connecting to API")
|
|
ws = new WebSocket("ws://10.100.0.40:9001/");
|
|
|
|
ws.on("open", function open() {
|
|
console.log("connected with websockets to API!");
|
|
api_connected = true;
|
|
});
|
|
|
|
ws.on("message", function message(message) {
|
|
var msg = JSON.parse(message);
|
|
if (msg.type == "STATUS") {
|
|
last_status = msg.data;
|
|
} else if (msg.type == "IMAGE") {
|
|
console.log("got picture");
|
|
console.log(msg.image);
|
|
last_image = msg.image;
|
|
received_picture = true;
|
|
}
|
|
});
|
|
|
|
ws.on("error", function error(err) {
|
|
console.log("there was an error")
|
|
console.error("error: " + err);
|
|
received_error = true;
|
|
});
|
|
}
|
|
|
|
|
|
// set the view engine to ejs
|
|
app.set("view engine", "ejs");
|
|
|
|
// use res.render to load up an ejs view file
|
|
|
|
// index page
|
|
app.get("/", function (req, res) {
|
|
res.render("index", { api_connected: api_connected });
|
|
});
|
|
|
|
app.get("/status", function (req, res) {
|
|
res.status(200).json(last_status);
|
|
});
|
|
|
|
app.get("/image", function (req, res) {
|
|
console.log("got picture request");
|
|
var request = JSON.stringify({
|
|
command: 5
|
|
});
|
|
console.log("sending picture request")
|
|
ws.send(request);
|
|
while (received_picture == false) { }
|
|
res.status(200).send(last_image);
|
|
});
|
|
|
|
app.post("/move", function (req, res) {
|
|
console.log("got move request");
|
|
var request = JSON.stringify({
|
|
command: 3,
|
|
up_down: req.body.up_down,
|
|
left_right: req.body.left_right,
|
|
forward_backward: req.body.forward_backward,
|
|
yaw: req.body.turn_left_right
|
|
});
|
|
ws.send(request);
|
|
});
|
|
|
|
app.get("/connect", function (req, res) {
|
|
console.log("got connect request");
|
|
connect_to_api();
|
|
setTimeout(function () {
|
|
if (api_connected) {
|
|
res.status(200).json({ connected: true });
|
|
} else {
|
|
received_error = false;
|
|
res.status(400).json({ connected: false });
|
|
}
|
|
}, 1000);
|
|
|
|
});
|
|
|
|
app.listen(8080);
|
|
console.log("Server is listening on port 8080");
|