HTTPS接続は機能しますが、同じサーバー/ポートでWebSocketが失敗します

HTTPS接続は機能しますが、同じサーバー/ポートでWebSocketが失敗します

私は Android 向けモバイル アプリ ゲームの開発者です。アプリは両方を使用しておりHTTPsWebSocket同じサーバーに接続しています。アプリはライブで、ほとんどのユーザーにとって問題なく動作します。

アプリが動作しないというユーザーが 1 人います。ログを取得したところ、ユーザーはモバイル セルラー ネットワーク経由で HTTPS 接続により問題なくサーバーに接続しているものの、同じサーバー/ポートへのソケット接続が失敗していることがわかりました。ソケットへの接続エラー:

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)

このログから、ソケットが毎回タイムアウトし、アプリが毎回異なるローカル ポートを使用しようとしていることがわかります。また、IP が正しく解決され、IPv4 が使用されていることもわかります。

ユーザーが接続できないのは、ネットワーク内の何らかの問題(ポートが閉じているなど)のためだと理解しています。

私の質問:ソケット接続が機能していないのに、同じサーバーおよびポート (443) で HTTPS 接続が正常に機能しているというのは、どうして可能なのでしょうか?

サーバー上のソケット実装は、ほとんどのユーザーに対して機能するため、正しいことがわかっています。さらに、私が確認した限りでは、サーバーは接続を拒否していませんが、ユーザーが応答を受信できない場合のように、接続が単純にタイムアウトしています。

ソケット接続を行うために、Java ライブラリを使用していますcom.neovisionaries.ws.client

関連情報