Die HTTPS-Verbindung funktioniert, aber WebSocket schlägt auf demselben Server/Port fehl

Die HTTPS-Verbindung funktioniert, aber WebSocket schlägt auf demselben Server/Port fehl

Ich bin der Entwickler des mobilen App-Spiels für Android. Die App verwendet beides HTTPsund WebSocketstellt eine Verbindung zum selben Server her. Die App ist live und funktioniert für die meisten Benutzer gut.

Ich habe einen Benutzer, der sagte, dass die App bei ihm nicht funktioniert. Ich konnte die Protokolle abrufen und sehen, dass der Benutzer über das Mobilfunknetz problemlos eine HTTPS-Verbindung zum Server herstellt, aber die Socket-Verbindung zum selben Server/Port schlägt fehl. Der Verbindungsfehler zum Socket:

Failed to connect to 'api.mafia-game.net:443': failed to connect to api.mafia-game.net/161.97.93.23 (port 443) from /:: (port 41656): connect failed: ETIMEDOUT (Connection timed out)

Failed to connect to 'api.mafia-game.net:443': failed to connect to api.mafia-game.net/161.97.93.23 (port 443) from /:: (port 41658): connect failed: ETIMEDOUT (Connection timed out)

Failed to connect to 'api.mafia-game.net:443': failed to connect to api.mafia-game.net/161.97.93.23 (port 443) from /:: (port 41660): connect failed: ETIMEDOUT (Connection timed out)

Aus diesem Protokoll erkenne ich, dass der Socket jedes Mal eine Zeitüberschreitung erlitten hat und die App jedes Mal versucht, andere lokale Ports zu verwenden. Ich sehe auch, dass die IP korrekt aufgelöst wurde und IPv4 verwendet wird.

Ich verstehe, dass der Benutzer aufgrund von etwas in seinem Netzwerk (z. B. geschlossenen Ports usw.) keine Verbindung herstellen kann.

Meine Frage:Wie ist es möglich, dass die Socket-Verbindung nicht funktioniert, die HTTPS-Verbindung auf demselben Server und Port (443) aber einwandfrei funktioniert?

Ich weiß, dass die Socket-Implementierung auf dem Server korrekt ist, da sie für die meisten Benutzer funktioniert. Außerdem lehnt der Server die Verbindung nicht ab, soweit ich sehe, sondern die Verbindung ist einfach abgelaufen, als ob der Benutzer keine Antwort erhalten könnte.

Um die Socket-Verbindung herzustellen, verwende ich die Java-Bibliothek com.neovisionaries.ws.client.

verwandte Informationen