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

标签 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 服务器的 EventBus 的远程地址(服务器的主机和端口)的功能?我查看了 Vert.x Web 客户端的文档(http://vertx.io/docs/jsdoc/https://github.com/vert-x3/vertx-web),但没有发现任何有用的信息。

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

编辑 1:

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

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

最佳答案

你想要的信息是你已经知道的。当您从客户端 Web 应用程序创建事件总线连接时:

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

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

localhost:8080

大多数时候你不想使用硬编码的主机名+端口,而是你的 html 被提供的位置,所以在 JavaScript 中你可以这样做:

window.location.host

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

关于Javascript Vert.x EventBus 客户端 SockJS 获取主机和连接端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40726076/

相关文章:

javascript - 如何将 unicode JavaScript 字符串转换为字节数组?

java - Vert.x 和 Netty 有什么区别?

java - Spring websocket端点并发送消息

java - 在 Magnolia CMS 上使用 Spring + SockJS + STOMP 的 Websocket

javascript - AngularJS - 使用 'true' 属性过滤数据

javascript - 多维数组过滤

javascript - 将javascript字符串转换为数组

java - 在 Eclipse 中停止 vertx verticle

kubernetes - vert.x 事件总线消息的 Istio 请求跟踪

spring - Spring 4 AbstractWebSocketMessageBrokerConfigurer与SockJS无法正确协商传输