Files
appRobotControl/3DInput.js

63 lines
2.0 KiB
JavaScript
Executable File

const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');
const url = require('url');
const driverWS = require("./programs/driver");
const httpsOptions = {
"enable": true,
'key': fs.readFileSync('https/localhost.key'),
'cert': fs.readFileSync('https/localhost.pem'),
"passphrase": "abcd"
}
server = https.createServer(httpsOptions, (req, res) => {
let parsedURL = url.parse(req.url, true);
let path = parsedURL.path.replace(/^\/+|\/+$/g,"");
if(path == ""){ path = "index.html"; }
let file = __dirname + "/public/" + path;
console.log("file : " + file);
fs.readFile(file, function(err, content){
if(err){
console.log("File Not found "+ file);
res.writeHead(404);
res.end();
} else {
res.setHeader('X-Content-Type-Option', 'nosniff');
//let mime = lookup(path);
let mime = "text/html"
res.writeHead(200,{'Content-type': mime});
res.end(content);
}
})
});
// vvvvvvvvvvvvvvvvvvvvv Forward WebSocket: Eigener WSS auf Driver vvvvvvvvvvvvvvvvvvvvvvvv
const wssInput = new WebSocket.Server({ noServer: true });
const targetServer = process.env.TARGET_SERVER || 'wss://localhost:2095';
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
driverWS.setupCommandForwarding(wssInput, targetServer);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Upgrade handler: accept all WebSocket upgrades and forward to the forwarding server (wssInput)
server.on('upgrade', (req, socket, head) => {
const pathname = url.parse(req.url).pathname;
console.log('Upgrade request for', pathname);
try {
// Forward the upgrade to the forwarding server
wssInput.handleUpgrade(req, socket, head, (ws) => {
wssInput.emit('connection', ws, req);
});
} catch (err) {
console.error('Upgrade handling error:', err && err.message || err);
socket.destroy();
}
});
server.listen(10010);
console.log("Connect to: https://localhost:10010")