Files
ThatProject/ESP32_CAM_MULTICAM/NodeServer/server.js

39 lines
1023 B
JavaScript

const path = require("path");
const express = require("express");
const WebSocket = require("ws");
const app = express();
const WS_PORT = 8888;
const HTTP_PORT = 8000;
const wsServer = new WebSocket.Server({ port: WS_PORT }, () => console.log(`WS Server is listening at ${WS_PORT}`));
let connectedClients = [];
wsServer.on("connection", (ws, req) => {
console.log("Connected");
ws.on("message", (data) => {
if (data.indexOf("WEB_CLIENT") !== -1) {
connectedClients.push(ws);
console.log("WEB_CLIENT ADDED");
return;
}
connectedClients.forEach((ws, i) => {
if (connectedClients[i] == ws && ws.readyState === ws.OPEN) {
ws.send(data);
} else {
connectedClients.splice(i, 1);
}
});
});
ws.on("error", (error) => {
console.error("WebSocket error observed: ", error);
});
});
app.use(express.static("."));
app.get("/client", (req, res) => res.sendFile(path.resolve(__dirname, "./client.html")));
app.listen(HTTP_PORT, () => console.log(`HTTP server listening at ${HTTP_PORT}`));