Refactor server.js for improved WebSocket and API configurations

- Updated API server to listen on a configurable port (2020) for better flexibility.
- Removed WebSocket setup from HTTP server, ensuring Socket.io is only available over HTTPS.
- Enhanced logging to clarify Socket.io availability based on TLS configuration.
This commit is contained in:
Torsten Schulz (local)
2026-01-14 14:30:50 +01:00
parent 9e845843d8
commit cd739fb52e

View File

@@ -8,8 +8,10 @@ import { setupWebSocket } from './utils/socket.js';
import { syncDatabase } from './utils/syncDatabase.js'; import { syncDatabase } from './utils/syncDatabase.js';
// HTTP-Server für API (Port 2020, intern, über Apache-Proxy) // HTTP-Server für API (Port 2020, intern, über Apache-Proxy)
const API_PORT = Number.parseInt(process.env.PORT || '2020', 10);
const httpServer = http.createServer(app); const httpServer = http.createServer(app);
setupWebSocket(httpServer); // Socket.io wird nur auf HTTPS-Server bereitgestellt, nicht auf HTTP-Server
// setupWebSocket(httpServer); // Entfernt: Socket.io nur über HTTPS
// HTTPS-Server für Socket.io (Port 4443, direkt erreichbar) // HTTPS-Server für Socket.io (Port 4443, direkt erreichbar)
let httpsServer = null; let httpsServer = null;
@@ -30,16 +32,19 @@ if (USE_TLS && TLS_KEY_PATH && TLS_CERT_PATH) {
console.log(`[Socket.io] HTTPS-Server für Socket.io konfiguriert auf Port ${SOCKET_IO_PORT}`); console.log(`[Socket.io] HTTPS-Server für Socket.io konfiguriert auf Port ${SOCKET_IO_PORT}`);
} catch (err) { } catch (err) {
console.error('[Socket.io] Fehler beim Laden der TLS-Zertifikate:', err.message); console.error('[Socket.io] Fehler beim Laden der TLS-Zertifikate:', err.message);
console.error('[Socket.io] Socket.io wird nur über HTTP-Server verfügbar sein'); console.error('[Socket.io] Socket.io wird nicht verfügbar sein');
} }
} else {
console.warn('[Socket.io] TLS nicht konfiguriert - Socket.io wird nicht verfügbar sein');
} }
syncDatabase().then(() => { syncDatabase().then(() => {
const port = process.env.PORT || 3001; // API-Server auf Port 2020 (intern, nur localhost)
httpServer.listen(port, '127.0.0.1', () => { httpServer.listen(API_PORT, '127.0.0.1', () => {
console.log(`[API] HTTP-Server läuft auf localhost:${port} (intern, über Apache-Proxy)`); console.log(`[API] HTTP-Server läuft auf localhost:${API_PORT} (intern, über Apache-Proxy)`);
}); });
// Socket.io-Server auf Port 4443 (extern, direkt erreichbar)
if (httpsServer) { if (httpsServer) {
httpsServer.listen(SOCKET_IO_PORT, '0.0.0.0', () => { httpsServer.listen(SOCKET_IO_PORT, '0.0.0.0', () => {
console.log(`[Socket.io] HTTPS-Server läuft auf Port ${SOCKET_IO_PORT} (direkt erreichbar)`); console.log(`[Socket.io] HTTPS-Server läuft auf Port ${SOCKET_IO_PORT} (direkt erreichbar)`);