2017-01-24 6 views
0

배경 : 내가 EventBus 자바에 Vert.x 코어 3.3.3 및 웹 3.3.3을 사용하고 서버와 Vert.x 2.0.0 및 SockJS 1.1.1을 자바 클라이언트의 웹 클라이언트에 연결하여 EventBus에 연결하십시오. 연결되어 있고 메시지를 보내고받을 수 있으며 모든 인바운드 및 아웃 바운드 트래픽이 열려 있습니다. 모든 것이 제대로 작동하고 있습니다. 자바 측면에서 Vert.x 자바 스크립트 unregisterHandler()와 close()를

, 나는 라우팅 아무것도 처리 할 SockJSHandler를 추가하고이 "/ eventbus/*"나는 자바 스크립트 클라이언트의 SockJS 연결에서 이벤트를 처리 할 수 ​​있도록. 나는 BridgeEventType에게의 같은 BridgeEventType.REGISTERUNREGISTER 제대로SOCKET_CLOSED (하나 개의 인스턴스를 제외하고, 따라서 질문)을 캡처 할 수 있어요. 예를 들어 클라이언트가 EventBus에 연결하면 호스트와 포트 및 처리기를 등록한 주소를 볼 수 있습니다. 웹 브라우저에서 JavaScript 클라이언트 탭을 새로 고치거나 닫으면 등록 취소 또는 폐쇄 소켓 이벤트가 표시됩니다. 이것은 모두 잘 작동합니다.

문제 : 수동으로 EventBus 연결을 종료하거나 자바 스크립트 클라이언트에서 핸들러의 등록을 취소하려고. 내가이 일을 사용하고 명령은 다음과 같습니다

(배경 : 변수 myEB가 내 vertx EventBus 연결 myEB = 새로운 vertx.EventBus (링크)로 정의된다이가 잘 작동)

myEB.unregisterHandler (destination, handler);myEB.close();은 내가 작성한 전화입니다.

unregisterHandler가까운 시도 UNREGISTER 또는 자바 EventBus의 SockJS 핸들러에 SOCKET_CLOSED 이벤트를 해고하지 않습니다.

질문 : 수동으로 EventBus에서 자바 스크립트 클라이언트 또는 분리에서 핸들러의 등록을 취소하려면 어떻게SockJS 핸들러가 또는 SOCKET_CLOSED 이벤트 UNREGISTER를 해고 것 같은 (소켓 연결을 닫습니다) ?

편집 1 : 몇 가지 테스트 후, 자바 스크립트 클라이언트에서 close()를 호출이 SOCKET_CLOSED 이벤트를 트리거 것 같다. unregisterHandler() 호출은 UNREGISTER 또는 SOCKET_CLOSED 이벤트를 발생시키지 않습니다.

+0

당신이 할 수있는 최선의 방법은 이상한 행동에 직면 해있는 것처럼 재생기를 제공하고 버그 보고서를 제출하는 것입니다. –

+0

@PauloLopes 나는 그것을해야 할 수도 있습니다. 버전 문제 또는 무엇인지 확실하지 않습니다. 제안 해 주셔서 감사합니다. – wrslatz

+0

@PauloLopes가이 질문에 대한 답변을 따르기 위해 기능이 제대로 작동하는 것 같습니다. 이벤트를 올바르게 캡처하지 못했을 수 있습니다. 도와 주셔서 감사합니다! – wrslatz

답변

0

문제가 해결되었습니다. 이벤트를 올바르게 캡처하지 못했습니다. SockJS Handler는 이러한 브릿지 이벤트를 발생시키지 만 이벤트 버스에 대한 액세스를 추적하기위한 좋은 후보자입니다.