背景:我使用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.REGISTER和UNREGISTER和SOCKET_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處理程序將觸發一個UNREGISTER或SOCKET_CLOSED事件?
編輯1:經過一番測試,似乎close()方法調用在JavaScript客戶端是燒製SOCKET_CLOSED事件。 unregisterHandler()調用未觸發未註冊或SOCKET_CLOSED事件。
我猜你可以做的最好的是提供一個複製和文件錯誤報告,因爲它看起來你正面臨一個奇怪的行爲。 –
@PauloLopes我可能必須這樣做。不知道這是一個版本問題還是什麼。感謝您的建議。 – wrslatz
@PauloLopes關注這個問題,看起來功能對我來說正常。我可能沒有正確捕獲該事件。謝謝您的幫助! – wrslatz