IBM Cloud Docs
Warum wird eine Verbindung über WebSocket nach 60 Sekunden geschlossen?

Warum wird eine Verbindung über WebSocket nach 60 Sekunden geschlossen?

Virtual Private Cloud Klassische Infrastruktur

Ihr Ingress-Service macht eine App verfügbar, die ein WebSocket verwendet. Die Verbindung zwischen einem Client und Ihrer WebSocket-App wird jedoch geschlossen, wenn für 60 Sekunden kein Datenverkehr zwischen ihnen übertragen wird.

Die Verbindung zu Ihrer WebSocket-App kann aus einem der folgenden Gründe nach 60 Sekunden Inaktivität unterbrochen werden:

  • Ihre Internetverbindung beinhaltet einen Proxy oder eine Firewall, der bzw. die eine lange Verbindung nicht toleriert.
  • Eine Zeitlimitüberschreitung im ALB an die WebSocket-App beendet die Verbindung.

Gehen Sie wie folgt vor, um zu verhindern, dass die Verbindung nach 60 Sekunden Inaktivität schließt:

  1. Wenn Sie über einen Proxy oder eine Firewall eine Verbindung zu Ihrer WebSocket-App herstellen, müssen Sie sicherstellen, dass der Proxy oder die Firewall nicht so konfiguriert ist, dass lange Verbindungen automatisch beendet werden.

  2. Um die Verbindung aktiv zu halten, können Sie den Wert des Zeitlimits erhöhen oder einen Heartbeat (Überwachungssignal) in Ihrer App einrichten.

    • Zeitlimit ändern: Erhöhen Sie den Wert von proxy-read-timeout in der ALB-Konfiguration. Wenn Sie beispielsweise das Zeitlimit von 60s in einen höheren Wert wie 300s ändern möchten, fügen Sie die folgende Annotation zur Ingress-Ressourcendatei hinzu: nginx.ingress.kubernetes.io/proxy-read-timeout: 300. Das Zeitlimit wird für alle öffentlichen ALBs in Ihrem Cluster geändert.
    • Heartbeat einrichten: Wenn Sie den Standardwert für das Lesezeitlimit der ALB nicht ändern möchten, müssen Sie in der WebSocket-App einen Heartbeat einrichten. Wenn Sie ein Überwachungssignalprotokoll unter Verwendung eines Frameworks wie WAMPeinrichten, sendet der Upstream-Server der App in regelmäßigen Abständen eine ping-Nachricht in einem Zeitintervall und der Client antwortet mit einer pong-Nachricht. Setzen Sie das Überwachungssignalintervall auf maximal 58 Sekunden, damit der ping/pong-Datenverkehr die Verbindung offen hält, bevor das 60-Sekunden-Zeitlimit erzwungen wird.