Javascript Vert.x EventBus Client SockJS получает хост и порт подключения

Я использую Vert.x Core 3.3.3 и Web 3.3.3 на Java в качестве сервера EventBus и Vert.x 2.0.0 и SockJS 1.1.1 на веб-клиенте в Javascript для подключения к EventBus. Я подключен, могу отправлять и получать сообщения, и весь входящий и исходящий трафик открыт. Все работает исправно.

Мой сервер может получить хост и порт для каждого подключения EventBus при подключении клиента. Это происходит из события моста SockJSHandler в Java через socket (). RemoteAddress () в формате «хост: порт».

Есть ли на стороне веб-клиента возможность получить удаленный адрес (хост и порт сервера) подключения SockJS EventBus к EventBus моего сервера Vert.x? Я просмотрел документацию по веб-клиенту Vert.x (http://vertx.io/docs/jsdoc/ и https://github.com/vert-x3/vertx-web) но ничего полезного не нашел.

Если вам нужна дополнительная информация, дайте мне знать. Заранее спасибо.

ИЗМЕНИТЬ 1:

Я неправильно понял, что искал в своем первоначальном вопросе, и сформулировал его плохо. Я знаю, что такое хост и порт EventBus, когда я устанавливаю соединение (т.е. var eb = new EventBus ('localhost: 8080 / eventbus'); как сказал @Paulo).

На самом деле я ищу хост и порт для обработчика, который мой клиент регистрирует на этой шине событий. Я вижу это на стороне сервера, как упоминалось выше. Хост возвращается как IP-адрес, а не тот, который я передал для создания соединения EventBus на стороне клиента. И порт другой, потому что для этого обработчика создается новое соединение SockJS (?). Можно ли получить хост и порт, особенно порт, SockJS-соединения для моего обработчика клиента.


person wrslatz    schedule 21.11.2016    source источник


Ответы (1)


Информация, которую вы хотите получить, - это то, что вы уже знаете. Когда вы создаете соединение eventbus из своего клиентского веб-приложения, вы делаете:

var eb = new EventBus('http://localhost:8080/eventbus');

Как видите, параметр, который вы должны передать конструктору, содержит то, что вы хотите знать:

localhost:8080

В большинстве случаев вы не хотите использовать жестко запрограммированное имя хоста + порт, а использовать место, где ваш html обслуживается, поэтому в JavaScript вы можете просто сделать:

window.location.host

И это даст вам место, где работает ваш сервер.

person Paulo Lopes    schedule 22.11.2016
comment
Расположение сервера не совпадает с местом подключения обработчика SockJS к EventBus. Например: я подключаюсь к localhost: 8080, как вы описали выше. Однако обработчик, который я назначаю EventBus, подключается к другому порту. Я вижу это на стороне сервера описанным выше способом. В этом случае мой клиентский адрес на стороне сервера возвращается как xxx.xx.xx.xxx:36138. Я хочу знать, могу ли я получить этот адрес (особенно мой порт SockJS) для использования в качестве уникальной ссылки между сервером и клиентом. - person wrslatz; 22.11.2016
comment
Я считаю, что мой первоначальный вопрос вводил в заблуждение и недостаточно четко объяснил. Как упоминал @Paulo, у меня есть хост и порт подключения EB, когда я устанавливаю соединение. На самом деле я ищу хост и порт обработчика моего клиента, который я регистрирую на этом EB. Я обновлю вопрос. - person wrslatz; 22.11.2016