Vert.x JavaScript unregisterHandler()和close()未在Java SockJS处理



背景:我使用Java中的Vert.x Core 3.3.3和Web 3.3.3作为EventBus服务器,并在Javascript中的Web客户端上使用Vert.x 2.0.0和SockJS 1.1.1连接到JavaEventBus。我已连接,可以发送和接收消息,所有入站和出站流量都是开放的。一切正常。

在Java方面,我添加了一个SockJSHandler来处理路由到"/eventbus/*"的任何东西,这样我就可以处理来自JavaScript客户端的SockJS连接的事件。我能够正确捕获BridgeEventType,如桥接事件类型。REGISTERUNREGISTER[/em>以及SOCKET_CLOSED(除了一个实例,因此有问题)。例如,当客户端连接到EventBus时,我可以看到它们的主机和端口以及它们注册处理程序的地址。当我刷新或关闭web浏览器中的JavaScript客户端选项卡时,我还可以看到注销或关闭套接字事件。这一切都很顺利。

问题:我正试图手动结束EventBus连接,或从JavaScript客户端注销处理程序。我使用的命令是:

(背景:变量myEB被定义为my vertxEventBus连接,myEB=new vertx.EventBus(链接)并且这运行良好)

myEB.unregisterHandler(目标,处理程序)myEB.close()是我打的电话。

unregisterHandlerclose尝试不会在Java EventBus的SockJS处理程序上触发UNREGISTERSOCKET_CLOSED事件。

问题:如何从JavaScript客户端手动注销处理程序,或断开与EventBus的连接(关闭套接字连接),以便我的SockJS处理程序触发unregistersocket_CLOSED事件?

EDIT 1:经过一些测试,JavaScript客户端中的close()调用似乎正在触发SOCKET_CLOSED事件。unregisterHandler()调用未触发UNREGISTERSOCKET_CLOSED事件。

问题已解决。我没有正确捕捉事件。SockJSHandler确实触发了这些桥接事件,它们是跟踪对eventbus访问的好候选者。

最新更新