12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- const http = require("http");
- const fs = require("fs");
- const path = require("path");
- // Store clients waiting for a message
- let clients = [];
- function sendToWebConsoleClient(client, message) {
- return new Promise((resolve, reject) => {
- client.writeHead(200, { "Content-Type": "application/json" });
- client.end(JSON.stringify({ message }), (err) => {
- if (err) {
- reject(err);
- } else {
- resolve();
- }
- });
- });
- }
- const messages = [];
- // Function to send a message to a specific client
- function sendToWebConsole(message) {
- messages.push(message);
- // Promise.all(clients.map((client) => sendToWebConsoleClient(client, message)));
- // clients = [];
- }
- exports.sendToWebConsole = sendToWebConsole;
- // Function to end the connection
- function endConnection(client, cb) {
- client.writeHead(200, { "Content-Type": "text/plain" });
- client.end("Connection ended", cb);
- // clients = clients.filter((c) => c !== client);
- }
- exports.endConnection = endConnection;
- http
- .createServer(function (req, res) {
- if (req.url === "/poll") {
- // Add client to the list
- // clients.push(res);
- res.writeHead(200, { "Content-Type": "text/json" });
- res.end(JSON.stringify({ messages }));
- // Set a timeout to end the connection if no message is received within a certain time
- // setTimeout(() => {
- // endConnection(res);
- // }, 30000); // 30 seconds timeout
- } else if (req.url === "/" || req.url === "/index.html") {
- // Serve the HTML page
- const filePath = path.join(__dirname, "index.html");
- fs.readFile(filePath, (err, data) => {
- if (err) {
- res.writeHead(500, { "Content-Type": "text/plain" });
- res.end("Server Error");
- } else {
- res.writeHead(200, { "Content-Type": "text/html" });
- res.end(data);
- }
- });
- } else {
- res.writeHead(404, { "Content-Type": "text/plain" });
- res.end("Not Found");
- }
- })
- .listen(8081);
|