2017-01-24 38 views
0

背景:我使用Vert.x核心3.3.3和Web 3.3.3在Java中作爲EventBus服務器Vert.x 2.0.0和SockJS 1.1.1在Javascript客戶端連接到Java EventBus。我已連接,能夠發送和接收消息,並且所有入站和出站流量都已打開。一切正常。Vert.x的JavaScript unregisterHandler()和close()未燒製的Java SockJS處理BridgeEventType事件

在Java方面,我添加了一個SockJSHandler來處理任何路由到「/ eventbus/*」的事情,以便我可以處理來自JavaScript客戶端的SockJS連接的事件。我能捕捉到BridgeEventType S,從而爲BridgeEventType.REGISTERUNREGISTERSOCKET_CLOSED正確的(除了一個實例,因此這個問題)。例如,當客戶端連接到EventBus時,我可以看到他們的主機和端口以及他們註冊處理程序的地址。當我在Web瀏覽器中刷新或關閉JavaScript客戶端選項卡時,我還可以看到註銷或關閉的套接字事件。這一切都很好。

問題:我試圖手動結束EventBus連接或JavaScript客戶端註銷的處理程序。我使用這樣做的命令是:

(背景:變量MYEB被定義爲我的vertx EventBus連接,MYEB =新vertx.EventBus(鏈接);這種運作良好)

myEB.unregisterHandler(destination,handler);myEB.close();我做的電話是

unregisterHandler密切嘗試不觸發UNREGISTER或在Java EventBus的SockJS處理SOCKET_CLOSED事件。

問題:如何手動從一個JavaScript客戶端或斷開EventBus註銷處理器(關閉套接字連接),使得我SockJS處理程序將觸發一個UNREGISTERSOCKET_CLOSED事件?

編輯1:經過一番測試,似乎close()方法調用在JavaScript客戶端是燒製SOCKET_CLOSED事件。 unregisterHandler()調用未觸發未註冊SOCKET_CLOSED事件。

+0

我猜你可以做的最好的是提供一個複製和文件錯誤報告,因爲它看起來你正面臨一個奇怪的行爲。 –

+0

@PauloLopes我可能必須這樣做。不知道這是一個版本問題還是什麼。感謝您的建議。 – wrslatz

+0

@PauloLopes關注這個問題,看起來功能對我來說正常。我可能沒有正確捕獲該事件。謝謝您的幫助! – wrslatz

回答

0

問題已解決。我沒有正確捕獲事件。 SockJS Handler確實能夠解決這些橋接事件,並且它們是跟蹤訪問事件總線的理想選擇。