Я пытаюсь разработать клиент Java для соединения с WebSocket, который включен на сервере.
Перед тем, как приступить к реализации, я прочитал RFC 6455 - Протокол WebSocket - IETF Tools docx,В разделах 11.1 и раздел 3 содержатся определения, как создавать URI и поведение URI.
Мои WRI URI и PORT: wss://xxxxxx-xxxxxx.maindomain.com/websocket:9050
Сервер настроен на использование URI и порта и работает с веб-клиентом.Но проблема возникает с клиентом Java.
Я пробовал следующие библиотеки:
- Такахико Кавасаки - nv-websocket-client
- crossbario - autobahn-java
- okhttp3 - WebSocket
HTTP-соединение установлено, и возвращается 200. Но для WebSocketответ на установление соединения - 101. Тогда я отлаживал, где произошла ошибка.
Перед отправкой запроса проверяется, доступен хост или нет, InetAddress.getByName(HOST_NAME)
.Этот класс InetAddress
находится в дереве java.net
.Все клиентские библиотеки Java используют этот InetAddress
API для процесса.
В моем случае URI: wss://xxxxx-xxxxx.mainDomain.com/websocket
Каждая библиотека получает толькочасть хоста (xxxxx-xxxxx.mainDomain.com
) для запроса.Тогда он получит 200, но не 101, потому что WebSocket установит соединение, если получит весь URI (xxxxx-xxxxx.mainDomain.com/websocket
).Но класс InetAddress
не допустит этого.
Мой вопрос: при определении URI WebSocket мы не можем использовать такие URI, как xxxxx-xxxxx.mainDomain.com/websocket
?.и что я должен сделать, чтобы это работало?