Refactor proposal mapping in FalukantService to handle null characters
- Updated the proposal mapping logic to filter out proposals with null proposed characters, enhancing data integrity. - Ensured that noble title is safely accessed with a fallback to null, improving robustness in character data handling.
This commit is contained in:
@@ -3335,7 +3335,9 @@ class FalukantService extends BaseService {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
return proposals.map(proposal => {
|
return proposals
|
||||||
|
.filter(proposal => proposal.proposedCharacter !== null)
|
||||||
|
.map(proposal => {
|
||||||
const birthdate = new Date(proposal.proposedCharacter.birthdate);
|
const birthdate = new Date(proposal.proposedCharacter.birthdate);
|
||||||
const age = calcAge(birthdate);
|
const age = calcAge(birthdate);
|
||||||
return {
|
return {
|
||||||
@@ -3346,7 +3348,7 @@ class FalukantService extends BaseService {
|
|||||||
proposedCharacterGender: proposal.proposedCharacter.gender,
|
proposedCharacterGender: proposal.proposedCharacter.gender,
|
||||||
proposedCharacterRegionId: proposal.proposedCharacter.regionId,
|
proposedCharacterRegionId: proposal.proposedCharacter.regionId,
|
||||||
proposedCharacterAge: age,
|
proposedCharacterAge: age,
|
||||||
proposedCharacterNobleTitle: proposal.proposedCharacter.nobleTitle.labelTr,
|
proposedCharacterNobleTitle: proposal.proposedCharacter.nobleTitle?.labelTr || null,
|
||||||
cost: proposal.cost,
|
cost: proposal.cost,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
105
websocket-config-guide.md
Normal file
105
websocket-config-guide.md
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
# WebSocket-Konfiguration für direkte Verbindungen
|
||||||
|
|
||||||
|
## Port-Aufteilung
|
||||||
|
|
||||||
|
- **Port 2020**: API (HTTP, intern, über Apache-Proxy)
|
||||||
|
- **Port 4443**: Socket.io (HTTPS, extern, direkt erreichbar)
|
||||||
|
- **Port 4551**: Daemon-WebSocket (HTTPS, extern, direkt erreichbar)
|
||||||
|
|
||||||
|
## Umgebungsvariablen für Backend-Server (Socket.io auf Port 4443)
|
||||||
|
|
||||||
|
Füge diese Variablen zur Backend `.env` oder Systemd-Service-Datei hinzu:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Socket.io HTTPS-Server
|
||||||
|
SOCKET_IO_PORT=4443
|
||||||
|
SOCKET_IO_TLS=1
|
||||||
|
SOCKET_IO_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem
|
||||||
|
SOCKET_IO_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem
|
||||||
|
# Optional:
|
||||||
|
# SOCKET_IO_TLS_CA_PATH=/etc/letsencrypt/live/www.your-part.de/chain.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
## Umgebungsvariablen für Daemon (Port 4551)
|
||||||
|
|
||||||
|
Füge diese Variablen zur Daemon-Systemd-Service-Datei hinzu:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Daemon WebSocket HTTPS-Server
|
||||||
|
DAEMON_PORT=4551
|
||||||
|
DAEMON_TLS=1
|
||||||
|
DAEMON_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem
|
||||||
|
DAEMON_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem
|
||||||
|
# Optional:
|
||||||
|
# DAEMON_TLS_CA_PATH=/etc/letsencrypt/live/www.your-part.de/chain.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
## Prüfen der Konfiguration
|
||||||
|
|
||||||
|
### 1. Backend-Server-Logs prüfen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo journalctl -u yourpart-backend -n 50 -f
|
||||||
|
```
|
||||||
|
|
||||||
|
Du solltest sehen:
|
||||||
|
- `[Socket.io] HTTPS-Server für Socket.io konfiguriert auf Port 4443`
|
||||||
|
- `[Socket.io] HTTPS-Server läuft auf Port 4443 (direkt erreichbar)`
|
||||||
|
|
||||||
|
Wenn du stattdessen siehst:
|
||||||
|
- `[Socket.io] TLS nicht konfiguriert - Socket.io wird nicht verfügbar sein`
|
||||||
|
|
||||||
|
Dann sind die Umgebungsvariablen nicht gesetzt.
|
||||||
|
|
||||||
|
### 2. Ports prüfen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo netstat -tlnp | grep -E "(4443|4551|2020)"
|
||||||
|
```
|
||||||
|
|
||||||
|
Du solltest sehen:
|
||||||
|
- Port 2020: Backend API (HTTP)
|
||||||
|
- Port 4443: Backend Socket.io (HTTPS)
|
||||||
|
- Port 4551: Daemon WebSocket (HTTPS)
|
||||||
|
|
||||||
|
### 3. Firewall prüfen
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo ufw status | grep -E "(4443|4551)"
|
||||||
|
```
|
||||||
|
|
||||||
|
Beide Ports sollten erlaubt sein.
|
||||||
|
|
||||||
|
## Systemd-Service-Dateien aktualisieren
|
||||||
|
|
||||||
|
### Backend-Service (`/etc/systemd/system/yourpart-backend.service`)
|
||||||
|
|
||||||
|
Stelle sicher, dass die Umgebungsvariablen in der `[Service]`-Sektion gesetzt sind:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Service]
|
||||||
|
Environment="SOCKET_IO_PORT=4443"
|
||||||
|
Environment="SOCKET_IO_TLS=1"
|
||||||
|
Environment="SOCKET_IO_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem"
|
||||||
|
Environment="SOCKET_IO_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Daemon-Service (`/etc/systemd/system/yourpart-daemon.service`)
|
||||||
|
|
||||||
|
Stelle sicher, dass die Umgebungsvariablen in der `[Service]`-Sektion gesetzt sind:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Service]
|
||||||
|
Environment="DAEMON_PORT=4551"
|
||||||
|
Environment="DAEMON_TLS=1"
|
||||||
|
Environment="DAEMON_TLS_KEY_PATH=/etc/letsencrypt/live/www.your-part.de/privkey.pem"
|
||||||
|
Environment="DAEMON_TLS_CERT_PATH=/etc/letsencrypt/live/www.your-part.de/fullchain.pem"
|
||||||
|
```
|
||||||
|
|
||||||
|
Nach dem Ändern der Service-Dateien:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl restart yourpart-backend
|
||||||
|
sudo systemctl restart yourpart-daemon
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user