2017-05-08 26 views
0

我正在做一个客户端/服务器Websocket。客户端在JavaScript中我已经拥有它,而服务器在Vert.x(Java)中,这是我有疑问的地方,因为我在Vert.x 2中找到了一个代码,我希望有人帮助我将它转换为韦尔.X 3Vert.x 2中的WebSocket服务器(转换为Vert.x 3)?

public class WebserverVerticle extends Verticle { 

@Override 
public void start() { 
final Pattern chatUrlPattern = Pattern.compile("/chat/(\\w+)"); 
final EventBus eventBus = vertx.eventBus(); 

// 1) HTTP Server 
    RouteMatcher httpRouteMatcher = new RouteMatcher().get("/", new 
    Handler<HttpServerRequest>() { 
     @Override 
     public void handle(final HttpServerRequest request) { 
     request.response().sendFile("web/chat.html"); 
     } 
    }).get(".*\\.(css|js)$", new Handler<HttpServerRequest>() { 
     @Override 
     public void handle(final HttpServerRequest request) { 
     request.response().sendFile("web/" + new File(request.path())); 
     } 
    }); 
    vertx.createHttpServer().requestHandler(httpRouteMatcher).listen(8080, 
    "localhost"); 



// 2) Websockets Chat Server 
// Aquí vendría el código de la segunda parte 
    .................... 
// Lo paso luego 
} 

} 我有一个小翻译,但我不知道。获得的很好的部分( “*(CSS |。JS)”)......我有以下几点:

public class WebserverVerticle extends AbstractVerticle{ 

public void start(Future<Void> startFuture) { 
Router router = Router.router(vertx); 

Pattern chatUrlPattern = Pattern.compile("/chat/(\\w+)"); 
EventBus eventBus = vertx.eventBus(); 

//HTTP Server 
router.route("/").handler(routingContext -> { 
    routingContext.request().response().sendFile("index2.html"); 
}).handler(routingContext -> { 
    routingContext.request().response().sendFile("web/" + new File(routingContext.request().path())); 
}); 

vertx.createHttpServer().requestHandler(router::accept).listen(8080, "localhost"); 


//Websocket Chat Server 
} 

我不知道这是否是对我所翻译,如果您能帮助我把它变成Vert.x 3.

回答

0

你在找什么叫做StaticHandler。

router.route("/web/*").handler(StaticHandler.create()); 
+0

然后不把.... routingContext - > { routingContext.request()响应()的sendfile( “index2.html”)。。 ();}};}}。handler(routingContext - > {0} {0} {0} 将取代所有StaticHandler.create()); –

+0

@DanielRuiz,是的。无论如何,您只能将路由器用于静态文件。所有的数据都通过websockets发送。 –

+0

好阿列克谢,我写了一封电子邮件,如果你可以帮我请!阅读。 –