如何在vertx中使用带有反应性websocketstream的路由
我是vert.x新手,我已经设法创建了一个可观察的套接字,但我不知道如何在反应式API版本中使用路由和url路由参数。vert.x Web router处理HTTP请求。您可以使用它来处理升级到websocket的如何在vertx中使用带有反应性websocketstream的路由,websocket,rx-java2,vert.x,Websocket,Rx Java2,Vert.x,我是vert.x新手,我已经设法创建了一个可观察的套接字,但我不知道如何在反应式API版本中使用路由和url路由参数。vert.x Web router处理HTTP请求。您可以使用它来处理升级到websocket的请求: Vertx vertx = Vertx.vertx(); var router = Router.router(vertx).route("/entity/:id") vertx.createHttpServer() .websocket
请求:
Vertx vertx = Vertx.vertx();
var router = Router.router(vertx).route("/entity/:id")
vertx.createHttpServer()
.websocketStream()
.toObservable()
.subscribe(sock -> sock.)
.map(ServerWebSocket::toObservable)
在路由器处理程序中,您可以使用RoutingContext#pathParam
方法检索路径参数。Um,好的。与@ServerEndpoint
的@PathParam
类似的是什么?我可能误解了你的问题。您想使连接升级到websocket成为可能,但前提是端点为/entity/:id
,对吗?是的,如果可能,请使用此解析的id
。谢谢,但如何使用rx实现此目的?从我的代码中可以看出,我使用的是Observable
router.route("/entity/:id").handler(rc -> {
String entityId = rc.pathParam("id");
HttpServerRequest request = rc.request();
ServerWebSocket webSocket = request.upgrade();
webSocket.frameHandler(frame -> {
webSocket.writeFrame(WebSocketFrame.textFrame("Pong " + entityId, true));
});
webSocket.accept();
});