mirror of
https://github.com/KubaPro010/fm-dx-webserver.git
synced 2026-07-31 09:19:16 +02:00
fix EADDRINUSE (if caused by webpage on launch)
This commit is contained in:
+29
-2
@@ -682,6 +682,26 @@ pluginsWss.on('connection', (ws, request) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function isPortOpen(host, port, timeout = 1000) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const socket = new net.Socket();
|
||||||
|
|
||||||
|
const onError = () => {
|
||||||
|
socket.destroy();
|
||||||
|
resolve(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
socket.setTimeout(timeout);
|
||||||
|
socket.once('error', onError);
|
||||||
|
socket.once('timeout', onError);
|
||||||
|
|
||||||
|
socket.connect(port, host, () => {
|
||||||
|
socket.end();
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Websocket register for /text, /audio and /chat paths
|
// Websocket register for /text, /audio and /chat paths
|
||||||
httpServer.on('upgrade', (request, socket, head) => {
|
httpServer.on('upgrade', (request, socket, head) => {
|
||||||
if (request.url === '/text') {
|
if (request.url === '/text') {
|
||||||
@@ -691,8 +711,15 @@ httpServer.on('upgrade', (request, socket, head) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else if (request.url === '/audio') {
|
} else if (request.url === '/audio') {
|
||||||
proxy.ws(request, socket, head);
|
isPortOpen('localhost', (Number(serverConfig.webserver.webserverPort) + 10)).then((open) => {
|
||||||
} else if (request.url === '/chat') {
|
if (open) {
|
||||||
|
proxy.ws(request, socket, head);
|
||||||
|
} else {
|
||||||
|
logWarn(`Audio stream port ${(Number(serverConfig.webserver.webserverPort) + 10)} not yet open — skipping proxy connection.`);
|
||||||
|
socket.end(); // close socket so client isn't left hanging
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (request.url === '/chat') {
|
||||||
sessionMiddleware(request, {}, () => {
|
sessionMiddleware(request, {}, () => {
|
||||||
chatWss.handleUpgrade(request, socket, head, (ws) => {
|
chatWss.handleUpgrade(request, socket, head, (ws) => {
|
||||||
chatWss.emit('connection', ws, request);
|
chatWss.emit('connection', ws, request);
|
||||||
|
|||||||
Reference in New Issue
Block a user