Vert.x JavaScript unregisterHandler () и close () не запускают события BridgeEventType в обработчике Java SockJS

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

На стороне Java я добавляю SockJSHandler для обработки всего, что направлено на «/ eventbus / *», чтобы я мог обрабатывать события из соединений SockJS от клиентов JavaScript. Я могу правильно захватывать BridgeEventType, такие как BridgeEventType.REGISTER и UNREGISTER и SOCKET_CLOSED (за исключением одного экземпляра , отсюда и вопрос). Например, когда клиент подключается к EventBus, я могу видеть его хост и порт, а также адрес, по которому они зарегистрировали обработчик. Когда я обновляю или закрываю вкладку клиента JavaScript в веб-браузере, я также вижу события отмены регистрации или закрытия сокета. Все работает хорошо.

Проблема: я пытаюсь вручную завершить соединение EventBus или отменить регистрацию обработчика в клиенте JavaScript. Для этого я использую следующие команды:

(фон: переменная myEB определена как мое соединение vertx EventBus, myEB = new vertx.EventBus (link);, и это работает хорошо)

myEB.unregisterHandler (destination, handler); и myEB.close (); - это мои вызовы.

Попытки unregisterHandler и close НЕ запускают события UNREGISTER или SOCKET_CLOSED в обработчике SockJS Java EventBus.

Вопрос: Как мне вручную отменить регистрацию обработчика на клиенте JavaScript или отключиться от EventBus (закрыть соединение сокета), чтобы мой обработчик SockJS вызовет событие UNREGISTER или SOCKET_CLOSED?

РЕДАКТИРОВАТЬ 1: после некоторого тестирования кажется, что вызов close () в клиенте JavaScript запускает событие SOCKET_CLOSED. Вызов unregisterHandler () не запускает события UNREGISTER или SOCKET_CLOSED.


person wrslatz    schedule 24.01.2017    source источник
comment
Я думаю, лучшее, что вы можете сделать, - это предоставить репродуктор и отправить отчет об ошибке, поскольку похоже, что вы столкнулись со странным поведением.   -  person Paulo Lopes    schedule 30.01.2017
comment
@PauloLopes Возможно, мне придется это сделать. Не уверен, что это проблема с версией или что-то в этом роде. Спасибо за предложение.   -  person wrslatz    schedule 30.01.2017
comment
@PauloLopes, чтобы ответить на этот вопрос, похоже, что у меня все работает правильно. Возможно, я неправильно запечатлел событие. Спасибо за помощь!   -  person wrslatz    schedule 10.03.2017


Ответы (1)


Проблема решена. Я неправильно снимал событие. SockJS Handler запускает эти события моста, и они являются хорошими кандидатами для отслеживания доступа к шине событий.

person wrslatz    schedule 10.03.2017