Сбой рукопожатия Websocket в Java

Так что я'Я пытаюсь разобрать сайт, который использует websocket для отправки данных клиентам. Из того, что ямы читали:

Ссылка 1Ссылка 2

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

Что я'мы сделали:

создал http-запрос`

`URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

// optional default is GET
con.setRequestMethod("GET");

//add request header
con.setRequestProperty("Cache-Control", "no-cache");
con.setRequestProperty("Host", "www.example.com");
con.setRequestProperty("Upgrade", "websocket");
con.setRequestProperty("Connection", "upgrade");
con.setRequestProperty("Origin", "https://example.com");
con.setRequestProperty("Sec-WebSocket-Extensions", "x-webkit-deflate-frame");
con.setRequestProperty("Sec-WebSocket-Key", "QkWkChtTGpaZL5PkOMaRtg==");
con.setRequestProperty("Sec-WebSocket-Version", "13");
con.setRequestProperty("User-Agent", "Mozilla/..;

и я прочитал ответ с кодом 200 (не 101, который должен быть).

Вопросы:

Как мне сгенерировать Sec-Websocket-Key? (в примере взят из firebug, все заголовки на самом деле)

1.1. Что можно сделать больше?

1.2. Эта же ссылка с http должна быть использована для доступа к веб-сокету? только с wss вместо https?

после этого я пытаюсь подключить клиента к серверу и получать сообщения методом onMessage.

WebSocketContainer container = ContainerProvider.getWebSocketContainer(); Session session = container.connectToServer(ClientEndpoint.class, buildCEC(), new URI("wss://async.example.com/socket.io/1/?t=" + System.currentTimeMillis()));

Я попытался в buildCec (), чтобы вставить заголовки для подключения к серверу.ClientEndpointConfig config = ClientEndpointConfig.Builder.create().build(); Configurator conf = config.getConfigurator();

`Map headers = new HashMap();

headers.put("Connection", Arrays.asList("keep-alive", "Upgrade"));
headers.put("Sec-Websocket-Extensions", Arrays.asList("x-webkit-deflate-frame"));
headers.put("Sec-Websocket-key", Arrays.asList("cx36sHrtuW9HZAaB6kKa/Q=="));
headers.put("Sec-Websocket-Version", Arrays.asList("13"));
headers.put("Upgrade", Arrays.asList("websocket"));
headers.put("User-Agent", Arrays.asList("Mozill..."));

conf.beforeRequest(headers);

return config;`

Вопросы

Хорошо ли мое суждение в случае, если я решу его и получу 101 код состояния из запроса на обновление http? (Я имею в виду, что мне делать дальше с этими подробностями?)Пожалуйста, не'я не осуждаю меням в начале с веб-сокетами в Java, и я неЯ слишком хорошо знаю javascript, я хочу сделать этот клиент в чистом Java с jsr-356. Я'мы сделали небольшие примеры с веб-сокетами, но я могуНигде не найти хорошего клиента с заголовками и более сложным рукопожатием.Можно ли подключиться к неизвестному серверу, не зная всех подробностей?

используя программную конечную точку и импортируйте javax.websocket.ContainerProvider; за раздачу соединения через websocket от jsr356.

Ответы на вопрос(2)

Ваш ответ на вопрос