Ich habe schon mehrfach versucht das Problem zu beheben.
Problem:
Die Verzögerung der Push-Nachrichten liegt nicht an einem „Offline-Server“, sondern an einer instabilen WebSocket-Verbindung zwischen MollySocket und den Signal-Servern.
Sobald der Keepalive fehlschlägt, bricht die Verbindung ab. Signal puffert die Nachrichten währenddessen in einer Warteschlange. Die „Verspätung“ ist genau das Zeitfenster, in dem MollySocket versucht, den unterbrochenen Handshake wiederherzustellen. Erst nach dem Reconnect werden alle gestauten Nachrichten auf einmal zugestellt.
Was ich jetzt nochmal zur Abhilfe versucht habe:
- Umzug: Von Apache auf Nginx.
- Nginx-Tuning: WebSocket-Header (
Upgrade/Connection) aktiv und Timeouts (proxy_read_timeout) auf3600sgesetzt, um vorzeitige Abbrüche durch den Proxy zu verhindern. - MTU-Anpassung: Die MTU im Docker-Netzwerk wurde auf
1420reduziert, um Probleme mit Paket-Fragmentierung auszuschließen. - IPv4-Zwang: IPv6 wurde innerhalb des Containers via
sysctlsdeaktiviert, um Routing-Probleme zu umgehen. - Debug-Analyse: Das Log zeigt weiterhin
Handshake not finished, was auf eine serverseitige Ablehnung durch Signal (z. B. wegen Session-Kollisionen oder Rate-Limiting) hindeutet.
Ich habe unter https://mollysocket.adminforge.de einen Mollysocket mit neuer Datenbank aufgesetzt. Testet bitte einmal ob es damit funktioniert.