【问题标题】:Send data from a Javafx-Client over Websockets to EventBus通过 Websockets 从 Javafx-Client 向 EventBus 发送数据
【发布时间】:2015-11-09 17:53:33
【问题描述】:

我在 Vert.x 中有一个 Socket 处理程序,并且我知道如何通过客户端到服务器(从 Web 浏览器到 Web 服务器)和服务器组件到中的 EventBus 发送数据-服务器组件模型。

现在我有一个 JavaFX 客户端通过 websockets 连接到 Vert.x 套接字处理程序:

public void start() {

    vertx.createHttpClient()
    .setHost(Main.SOCKET_SERVER)
    .setPort(8080)
    .connectWebsocket("/chat/service", new Handler<WebSocket>() {                   
        @Override
        public void handle(WebSocket websocket) {
            ws = websocket;  
            websocket.dataHandler(new Handler<Buffer>() {
                @Override
                public void handle(Buffer data) {
                    System.out.println("Received Data");
                }
            });

            //...
            // use ws for authentification
            ws.writeTextFrame("doAuthentification");
            //...
        }    
    }
}    

Socket 连接到“/chat/service”。

现在我想使用这个 Websocket 从 Vert.x 调用不同的服务。我知道 EventBus 在 JavaFX-Client 上不起作用。

在服务器上:

ws.dataHandler(new Handler<Buffer>() {
    @Override
    public void handle(final Buffer data) {
        String text = data.toString();          
        if(text.contentEquals("doAuthentification")){
            logger.info("doAuthentification()");
            doAuthentification();
        }
    // ...
    }
}

我现在可以通过 WebSocket 发送像 doAuthentification 这样的“命令”,然后,在服务器端,当收到该命令时,我可以使用 EventBus 进一步处理它。

从客户端使用它的正确方法是什么。想法?

【问题讨论】:

  • JavaFX 客户端是部署为 verticle 还是独立应用程序?
  • 嗨。它是一个独立的应用程序。不作为垂直运行。

标签: javafx websocket event-bus vert.x


【解决方案1】:

由于您的应用程序被打包为独立应用程序,而不是像在 Vert.x 实例中那样部署,因此您将无法调用事件总线,因为它是一个 Vert .x 特定功能。

您的方法是,正如您已经尝试过的那样,以标准方式与您的 Vert.x 应用程序通信,例如通过套接字或 http(我建议使用 HTTP 和 RESTful应用程序样式),并通过入口点发送消息,该入口点稍后将传输到适当的 Verticle。

您可能需要配置许多基于路径的处理程序,可能在内部使用正则表达式捕获组,并让每个处理程序选择适当的架构来委派事件,而不是使用基于硬编码消息的单个处理程序。

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 2020-03-29
    • 2017-12-03
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多