| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- let http = require("http");
- let net = require("net");
-
- let tcpport = process.env["TCPPORT"] ? parseInt(process.env["TCPPORT"]) : 8080;
- let httpport = process.env["HTTPPORT"] ? parseInt(process.env["HTTPPORT"]) : 8081;
-
- let html = `
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>XRemoteView</title>
- </head>
- <body>
- <img id="image" src="/image" style="object-fit: contain; height: 100vh; width: 100%;">
- <script>
- let img = document.getElementById("image");
- let url = img.src;
- setInterval(() => {
- let rand = Math.floor(Math.random() * 1000000);
- img.src = url + "?" + rand;
- }, 1000);
- </script>
- </body>
- </html>
- `;
-
- let imgdata = Buffer.alloc(0);
-
- net.createServer(conn => {
- console.log("Connection", conn.remoteAddress);
-
- received = Buffer.alloc(0);
- let hasLength = false;
- let expectedLen = 0;
- conn.on("data", data => {
- received = Buffer.concat([received, data]);
-
- while (true) {
- if (!hasLength && received.length >= 4) {
- expectedLen = received.readInt32LE(0);
- hasLength = true;
- }
-
- if (hasLength && received.length >= expectedLen + 4) {
- imgdata = received.slice(4, expectedLen + 4);
- received = received.slice(expectedLen + 4);
- hasLength = false;
- } else {
- break;
- }
- }
- });
- }).on("error", err => console.error(err)).listen(tcpport, "0.0.0.0");
-
- http.createServer((req, res) => {
- if (req.url.split("?")[0] == "/image") {
- res.writeHead(200, {
- "Content-Type": "image/jpeg",
- "Refresh": "1",
- });
- res.end(imgdata);
- } else {
- res.writeHead(200);
- res.end(html);
- }
- }).listen(httpport, "0.0.0.0");
|