通过Websockets从Javafx-Client发送数据到EventBus



我在Vert中有一个Socket处理程序。我知道如何通过EventBus以客户端到服务器(从Web浏览器到Web服务器)和服务器组件到服务器组件的方式发送数据。

现在我有一个JavaFX-Client连接到Vert。x通过websockets的Socket处理程序:

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发送像 doauthentication 这样的"命令",然后,在服务器端,当接收到该命令时,我可以使用EventBus进一步处理它。

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

由于您的应用程序被打包为独立应用程序,因此不像在版本中部署。x实例时,您将无法调用事件总线,因为它是版本。X 特定的功能。

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

您可能需要配置许多基于路径的处理程序,可能在其中使用regex捕获组,并让每个处理程序选择适当的模式来委托事件,而不是基于硬编码消息的单个处理程序。

相关内容

  • 没有找到相关文章

最新更新