Javascript Vert.x EventBus客户端SockJS获取主机和连接端口

时间:2016-11-21 17:34:02

标签: javascript vert.x sockjs

我在Java中使用Vert.x Core 3.3.3和Web 3.3.3作为EventBus服务器,在Javascript中的Web客户端上使用Vert.x 2.0.0和SockJS 1.1.1连接到EventBus。我已连接,能够发送和接收消息,并且所有入站和出站流量都已打开。一切都运转正常。

我的服务器能够在客户端连接时获取每个EventBus连接的主机和端口。这来自Java中的SockJSHandler的桥接事件,通过socket()。remoteAddress(),格式为“host:port”。

在Web客户端,是否有功能将EventBus SockJS连接的远程地址(服务器的主机和端口)连接到Vert.x Server的EventBus?我查看了Vert.x Web Client(http://vertx.io/docs/jsdoc/& https://github.com/vert-x3/vertx-web)的文档,但没有找到任何有用的内容。

如果您需要更多信息,请告诉我。提前谢谢。

编辑1:

我在我原来的问题中误解了我实际上正在寻找的东西并且说得不好。我知道当我建立连接时EventBus的主机和端口是什么(即var eb = new EventBus('localhost:8080 / eventbus');正如@Paulo所说的那样。)

我实际需要的是我的客户在EventBus上注册的Handler的主机和端口。我可以在服务器端看到这个,如上所述。主机作为IP地址返回,而不是我传入的在客户端创建EventBus连接的内容。端口是不同的,因为为该处理程序(?)创建了一个新的SockJS连接。是否可以获取客户端Handler的SockJS连接的主机和端口,尤其是端口。

1 个答案:

答案 0 :(得分:2)

您想要的信息是您已经知道的。从客户端Web应用程序创建eventbus连接时,您可以:

var eb = new EventBus('http://localhost:8080/eventbus');

正如您所看到的,您必须传递给构造函数的参数包含您想要知道的内容:

localhost:8080

大多数情况下,您不想使用硬编码的主机名+端口,而是使用html的位置,所以在JavaScript中您可以这样做:

window.location.host

这将为您提供服务器运行的位置。