Änderung:
- Der ownerId wird nun aus dem userId extrahiert und als Ganzzahl gesetzt, bevor ein Raum erstellt wird. Dies verbessert die Zuordnung des Raums zum entsprechenden Benutzer.
Diese Anpassung sorgt dafür, dass die Raumerstellung korrekt mit dem zugehörigen Benutzer verknüpft ist.
Problem:
- Chat WebSocket versuchte wss://www.your-part.de (ohne Port)
- Sollte wss://www.your-part.de:1235 sein (direkte Verbindung)
Lösung:
- getChatWsUrl() verwendet jetzt Port 1235 für Production
- getChatWsCandidates() verwendet Port 1235 für alle Hosts
- Direkte Verbindung zum Chat-Server auf Port 1235
Chat-Server:
- Läuft mit SSL auf Port 1235
- yourchat.service: SSL WebSocket Server starting on port 1235
- Frontend: wss://www.your-part.de:1235 mit 'chat' Protokoll
Änderung:
- Umgebungsvariablen `VITE_DAEMON_SOCKET` und `VITE_CHAT_WS_URL` werden nun direkt beim Bauen des Frontends gesetzt, anstatt sie vorher zu exportieren. Dies verbessert die Handhabung der Variablen im Build-Prozess.
Diese Anpassung sorgt dafür, dass die Umgebungsvariablen korrekt im Build-Prozess verarbeitet werden und die WebSocket-Verbindung stabil bleibt.
Änderung:
- Die WebSocket-Verbindung verwendet jetzt die Variable `daemonUrl`, die entweder den Wert von `VITE_DAEMON_SOCKET` oder einen Standardwert hat. Dies verbessert die Flexibilität und stellt sicher, dass die Verbindung auch bei fehlender Umgebungsvariable funktioniert.
Diese Anpassung sorgt dafür, dass die WebSocket-Verbindung stabiler und zuverlässiger ist.
Änderung:
- VITE_DAEMON_SOCKET wurde von wss://www.your-part.de/ws auf wss://www.your-part.de:4551 geändert, um die Verbindung zum Daemon-Service zu verbessern.
Diese Anpassung stellt sicher, dass die WebSocket-Verbindung korrekt konfiguriert ist und die Kommunikation mit dem Daemon-Service reibungslos funktioniert.
Problem:
- VITE_DAEMON_SOCKET wird nicht im Build-Prozess verarbeitet
- Umgebungsvariable wird nicht korrekt in JavaScript eingebaut
Lösung:
- echo 'VITE_DAEMON_SOCKET=wss://www.your-part.de/ws' >> .env
- export VITE_DAEMON_SOCKET=wss://www.your-part.de/ws
- Umgebungsvariablen werden sowohl in .env geschrieben als auch exportiert
Dadurch sollte das yourpart-protocol korrekt im Frontend eingebaut werden.
Änderung:
- VITE_CHAT_WS_URL wurde von wss://www.your-part.de/ws auf wss://www.your-part.de:1235 geändert, um die Verbindung zu verbessern.
Diese Anpassung stellt sicher, dass die WebSocket-Verbindung korrekt konfiguriert ist und die Kommunikation mit dem Daemon-Service reibungslos funktioniert.
Problem:
- VITE_DAEMON_SOCKET wird nicht im Build-Prozess verarbeitet
- Umgebungsvariable wird nicht korrekt in JavaScript eingebaut
Lösung:
- echo 'VITE_DAEMON_SOCKET=wss://www.your-part.de/ws' >> .env
- echo 'VITE_CHAT_WS_URL=wss://www.your-part.de:1235' >> .env
- Umgebungsvariablen werden direkt in .env Datei geschrieben
Dadurch sollte das yourpart-protocol korrekt im Frontend eingebaut werden.
Problem:
- VITE_DAEMON_SOCKET wird nicht im Build-Prozess verarbeitet
- Umgebungsvariable wird nicht korrekt in JavaScript eingebaut
Lösung:
- export VITE_DAEMON_SOCKET=wss://www.your-part.de/ws
- export VITE_CHAT_WS_URL=wss://www.your-part.de:1235
- Umgebungsvariablen sind jetzt im Build-Prozess verfügbar
Dadurch sollte das yourpart-protocol korrekt im Frontend eingebaut werden.
Problem:
- 502 Proxy Error trotz upgrade=websocket Parameter
- Daemon-Service erwartet reine WebSocket-Verbindungen
Lösung:
- ProxyPass mit upgrade=websocket entfernt (unzuverlässig)
- Nur RewriteRules für WebSocket-Upgrade-Requests verwenden
- ProxyPass '/ws/' '!' hinzugefügt um andere Requests zu blockieren
Daemon-Logs zeigen:
- WebSocket Server auf Port 4551 (no SSL)
- 'Unknown client spec version 0' Fehler
- Apache muss WebSocket-Upgrade korrekt weiterleiten
Problem:
- 502 Proxy Error bei WebSocket-Verbindungen zu /ws/
- Apache konnte nicht mit Daemon-Service auf Port 4551 verbinden
Lösung:
- upgrade=websocket Parameter zu ProxyPass hinzugefügt
- Reihenfolge der RewriteRules und ProxyPass optimiert
- WebSocket-Upgrade-Requests werden jetzt korrekt behandelt
Konfiguration:
- RewriteRules für WebSocket-Upgrade vor ProxyPass
- ProxyPass mit upgrade=websocket für /ws/ → ws://localhost:4551/
- Daemon-Service läuft auf Port 4551 und akzeptiert nur WebSocket-Verbindungen
Problem:
- Socket.io-Verbindungen scheiterten mit NS_ERROR_WEBSOCKET_CONNECTION_REFUSED
- Apache hatte keine WebSocket-Upgrade-Header für /socket.io/ konfiguriert
Lösung:
- WebSocket-Upgrade-Header für /socket.io/ hinzugefügt
- RewriteRule für Socket.io WebSocket-Upgrades konfiguriert
- Doppelte RewriteEngine on Zeile entfernt
Jetzt sollten Socket.io WebSocket-Verbindungen über Apache korrekt
an den Backend-Server auf Port 2020 weitergeleitet werden.
Problem:
- Frontend versuchte native WebSocket-Verbindung zu /ws/ aufzubauen
- Backend hat nur Socket.io, keine native WebSocket-Unterstützung für /ws/
Lösung:
- Daemon WebSocket verwendet jetzt Socket.io statt native WebSocket
- Beide Verbindungen (Socket.io und Daemon) verwenden jetzt Socket.io
- Event-Handler von WebSocket auf Socket.io umgestellt
Dies löst die WebSocket-Verbindungsfehler, da der Backend-Server
nur Socket.io unterstützt, keine nativen WebSockets.
Apache-Konfiguration:
- Füge WebSocket-Proxy für /ws/ Pfad hinzu
- Leite WebSocket-Upgrade-Header korrekt weiter
Frontend-Konfiguration:
- Socket.io verwendet jetzt VITE_API_BASE_URL (über /socket.io/ Proxy)
- Daemon WebSocket verwendet wss://www.your-part.de/ws
- Chat WebSocket verwendet wss://www.your-part.de/ws
Dies löst die 'operation is insecure' Fehler und ermöglicht
WebSocket-Verbindungen über HTTPS.
Frontend:
- Lösche dist/ vor Build
- Lösche /opt/yourpart/frontend/dist vollständig vor Deploy
- Erstelle Zielverzeichnis neu nach dem Löschen
Backend:
- Lösche /opt/yourpart/backend vollständig vor Deploy
- Erstelle Backend-Verzeichnis neu nach dem Löschen
Dies stellt sicher, dass keine alten Dateien zurückbleiben.
- .env.local: Verwendet localhost:3001 für lokale Entwicklung
- .env.server: Verwendet wss:// für Produktionsumgebung
- Entferne backend/dist/ aus Git-Tracking
- Erweitere .gitignore um backend/dist/
- Hinzufügen von Konsolenprotokollen zur Überwachung der Verbindungsstatus für Socket.io und WebSocket.
- Fehlerbehandlung für Verbindungsfehler und -abbrüche verbessert.
- Sicherstellen, dass die Verbindungsversuche bei Fehlern korrekt behandelt werden.
- Änderung der Socket-URL von VITE_API_BASE_URL zu VITE_DAEMON_SOCKET zur Verbesserung der Sicherheit.
- Setzen von 'secure' auf true, um eine sichere Verbindung zu gewährleisten.
- Hinzufügen von Optionen für die WebSocket-Verbindung, um die Sicherheit und die Transportmethoden zu verbessern.
- Setzen von 'secure' auf false und Festlegen der Transports auf 'websocket' und 'polling'.
- Änderung des Verzeichnispfades im Deployment-Skript für das Frontend.
- Aktualisierung der API- und WebSocket-URLs in der .env.local-Datei auf die Produktionsumgebung.
- Entfernen des Standardwerts für die API-Basis-URL, um die Konfiguration flexibler zu gestalten.
- Sicherstellung, dass die URL korrekt auf die Backend-API verweist.
- Korrektur des Kopiervorgangs für die .env-Datei, um die richtige Datei im Zielverzeichnis zu verwenden.
- Vereinheitlichung der Pfade für das Kopieren der Server-Umgebungsvariablen und der .env-Datei.
- Hinzufügen eines Schrittes zum Kopieren der .env-Datei in das Zielverzeichnis.
- Anpassung der Berechtigungen für die .env-Datei und das Frontend-Verzeichnis.
- Hinzufügen von Schritten zum Kopieren der Server-Umgebungsvariablen vor dem Neuaufbau des Frontends.
- Anpassung der Schritte zur Erstellung des Zielverzeichnisses und zum Löschen des alten Frontends.
- Wiederherstellung der lokalen .env-Datei nach dem Deployment.
- Hinzufügen eines Neustarts des yourpart-Dienstes nach der Datenbanksynchronisation.
- Implementierung einer Statusprüfung des Dienstes nach dem Neustart, um sicherzustellen, dass der Dienst ordnungsgemäß läuft.
- Hinzufügen von Konsolenausgaben zur Nachverfolgung des Ladevorgangs von Lagertypen und zur Überprüfung, ob neue Lagertypen hinzugefügt werden können.
- Anpassung der Bedingungen zur Anzeige des Hinzufügen-Buttons basierend auf dem Vorhandensein von Lagertypen und bestehenden Stocks in den Branches.
- Entfernen des Inhaltsverzeichnisses vor dem Kopieren des Backends, um sicherzustellen, dass nur die neuesten Dateien übertragen werden.
- Änderung der Berechtigungen für das Backend und die .env-Datei, um den aktuellen Benutzer zu verwenden.
- Aktualisierung der Abhängigkeiten in package.json und package-lock.json, einschließlich der neuesten Versionen von dotenv, jsdom, sharp und uuid.
- Entfernen der Erstellung der Verzeichnisstruktur und der Installation von Systemd- und Apache-Konfigurationen.
- Integration des Frontend-Deployments über ein separates Skript.
- Hinzufügen einer neuen Anzeige für den Fall, dass alle verfügbaren Lagertypen bereits vorhanden sind.
- Anpassung der Logik zur Überprüfung, ob neue Lagertypen hinzugefügt werden können.
- Aktualisierung der Übersetzungen in den Sprachdateien für die neuen Meldungen zur Lagerverwaltung.
- Implementierung von Methoden zur Hinzufügung und Abfrage von Lagerbeständen im AdminController und AdminService.
- Erweiterung der Routen im AdminRouter zur Unterstützung der neuen Lagerverwaltungsfunktionen.
- Anpassung der Benutzeroberfläche zur Integration eines Dialogs für die Lagerhinzufügung und zur Anzeige von Lagertypen.
- Aktualisierung der Übersetzungen in den Sprachdateien für die neuen Funktionen und Fehlermeldungen.
- Hinzufügen von Routen und Methoden zur Verwaltung von Niederlassungen und Lagerbeständen im AdminController und AdminService.
- Implementierung der Logik zum Abrufen von Niederlassungen und Aktualisieren von Lagerbeständen.
- Anpassung der Benutzeroberfläche zur Unterstützung der neuen Funktionen, einschließlich eines Tab-Systems zur Anzeige von Benutzerdaten und Niederlassungen.
- Aktualisierung der Übersetzungen für die neuen Funktionen in den Sprachdateien.
- Die Erstellung von Branches und Lagerbeständen wurde umstrukturiert, um die Abhängigkeiten zwischen den Objekten klarer zu gestalten.
- Der Lagerbestand wird nun mit einer Menge von 20 erstellt und ist mit dem entsprechenden Branch verknüpft, um die Datenintegrität zu verbessern.
- Hinzufügen von Kommentaren zur Unterscheidung zwischen öffentlichen und geschützten Routen im Authentifizierungsrouter.
- Temporäre Deaktivierung des E-Mail-Versands für Aktivierungs-E-Mails im E-Mail-Dienst zur Unterstützung des Deployments.
- Anpassung der Datenbankinitialisierung zur Vermeidung von Duplikaten bei Adelstiteln.
- Anpassung des SQL-Statements zur Verwendung des korrekten Tabellennamens 'type.user_param_visibility_type' anstelle von 'type.user_param_visibility' für die Sichtbarkeitseinstellungen.
- Verbesserung der Datenintegrität bei der Erstellung von Benutzerparametern.
- Import der neuen Modelle für das Match3-Minispiel, einschließlich Kampagnen, Levels, Tile-Typen und Benutzerfortschritt.
- Aktualisierung der Exportstruktur, um die neuen Modelle zu integrieren und die Übersichtlichkeit zu verbessern.
- Die Erstellung der Kampagne erfolgt nun vor dem Löschen und der Neuanlage der Levels, um die Logik der Initialisierung zu verbessern.
- Konsolenausgaben wurden aktualisiert, um den Fortschritt der Kampagnenerstellung und das Löschen der existierenden Levels klarer darzustellen.
- Hinzufügen einer Fehlerbehandlung für den Fall, dass die Match3-Tabellen nicht existieren, um die Robustheit der Initialisierung zu erhöhen.
- Anpassung der Konsolenausgaben zur besseren Nachverfolgbarkeit des Initialisierungsprozesses.
- Aktualisierung des Kommentars zur Klarstellung der Reihenfolge der Initialisierung nach der Erstellung aller Tabellen.
- Die Funktion zur Aktualisierung der bestehenden Match3-Levels wurde nach der Initialisierung von Match3-Daten verschoben, um sicherzustellen, dass die Levels korrekt aktualisiert werden.
- Konsolenausgaben wurden angepasst, um die Änderungen klarer zu dokumentieren.
- Die Funktion zur Initialisierung der Adelstitel wurde von initializeFalukantPredefines.js nach initializeFalukantTypes.js verschoben, um die Struktur und Lesbarkeit des Codes zu verbessern.
- Konsolenausgaben zur Bestätigung der erfolgreichen Initialisierung wurden hinzugefügt.