HTTPS-соединение работает, но WebSocket дает сбой на том же сервере/порту

HTTPS-соединение работает, но WebSocket дает сбой на том же сервере/порту

Я разработчик мобильного приложения для Android. Приложение использует оба HTTPsи WebSocketподключение к одному серверу. Приложение работает и хорошо работает для большинства пользователей.

У меня есть один пользователь, который сказал, что приложение у него не работает. Мне удалось получить логи и увидеть, что пользователь подключается через мобильную сотовую сеть через 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.

Я понимаю, что пользователь не может подключиться из-за каких-то проблем в своей сети (например, закрытых портов и т.п.).

Мой вопрос:как это возможно, что сокетное соединение не работает, но HTTPS-соединение работает нормально на том же сервере и порту (443)?

Я знаю, что реализация сокета на сервере правильная, потому что она работает для большинства пользователей. Плюс, сервер не отклоняет соединение, как я вижу, но соединение просто истекло по тайм-ауту, как если бы пользователь не мог получить ответ обратно.

Для создания сокетного соединения я использую библиотеку Java com.neovisionaries.ws.client.

Связанный контент