2017-01-24 6 views
0

背景:私はEventBusとして、JavaでVert.xのコア3.3.3およびWeb 3.3.3を使用していますサーバーとVert.x 2.0.0とSockJS 1.1.1を、JavaクライアントのEventBusに接続するためにJavascriptのWebクライアントにインストールします。私は接続されており、メッセージの送受信が可能で、すべての着信および発信トラフィックは開いています。すべてが適切に機能しています。Vert.xはJavaScript unregisterHandler()とclose()

Java側では、JavaScriptクライアントからのSockJS接続のイベントを処理できるように、「/ eventbus/*」にルーティングされたものを処理するために、SockJSHandlerを追加しています。私は(1つのインスタンスので、質問を除く)などに正しくBridgeEventType.REGISTERUNREGISTERなどBridgeEventTypeSOCKET_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イベントを発射されません。

質問:私は手動でEventBusからJavaScriptクライアントまたは切断からのハンドラの登録を解除するにはどうすればよいSockJSハンドラがかSOCKET_CLOSEDイベントUNREGISTERを発射するような(ソケット接続を閉じます) ?

EDIT 1:いくつかのテストの後、JavaScriptクライアントで近い()呼び出しがSOCKET_CLOSEDイベントを発火しているようです。 unregisterHandler()コールがUNREGISTERまたはSOCKET_CLOSEDイベントのいずれかを起動していません。

+0

私はあなたが奇妙な動作に直面しているように見えるので、再生器を提供し、バグレポートを提出することができると思います。 –

+0

@PauloLopes私はそれをしなければならないかもしれません。バージョン管理の問題かどうかは不明です。提案していただきありがとうございます。 – wrslatz

+0

@Pauloは、この質問のバックアップをフォローするために、機能が私のために正しく機能しているように見えます。イベントを正しくキャプチャしていない可能性があります。助けてくれてありがとう! – wrslatz

答えて

0

問題が解決しました。私はイベントを正しくキャプチャしていませんでした。 SockJS Handlerはこれらのブリッジイベントを起動し、イベントバスへのアクセスを追跡するのに適しています。