public class VerticleMain {
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
HttpServer server = vertx.createHttpServer();
Router router = Router.router(vertx);
router.get("/v1/connect/:id").handler(ctx -> {
String id = ctx.request().getParam("id");
WebsocketVerticle wsVerticle = new WebsocketVerticle(router, id);
vertx.deployVerticle(wsVerticle, result -> {
System.out.println("deployed verticle " + result.result());
ctx.response().end("success");
}
}
router.route("/static/*").handler(StaticHandler.create());
server.requestHandler(router::accept).listen(4100);
}public class WebsocketVerticle {
private Router router;
private String id;
public WebsocketVerticle(Router router, String id) {
this.router = router;
this.id = id;
}
public void start() {
router.route("/live/" + id + "/*").handler(sockHandler());
}
public SockJSHandler sockHandler() {
SockJSHandler handler = SockJSHandler.create(vertx).socketHandler(socket -> {
sock.endHandler(ctx -> {
System.out.println("hash code outside handler: " + this.hashCode());
vertx.undeploy(deploymentID(), res -> {
System.out.println("attempting to undeploy verticle " + deploymentID());
System.out.println("undeployment successful: " + res.succeeded());
}
});
});
System.out.println("hash code outside handler: " + this.hashCode());
return handler;
}
}hash code outside handler: 1258000200
deployed verticle c6692d24-9061-4b5b-bd2e-2d0be36e3fcchash code inside handler: 1258000200attempting to undeploy verticle c6692d24-9061-4b5b-bd2e-2d0be36e3fccundeployment successful: truehash code outside handler: 1738849029
deployed verticle d96abbb22-c7e7-481c-9285-2dc66893cbe8hash code inside handler: 1258000200
attempting to undeploy verticle c6692d24-9061-4b5b-bd2e-2d0be36e3fcc
undeployment successful: falserouter.route("/live/" + id + "/*").remove();Why do you feel the need to share the router? Presumably there's a reason for that choice.
To view this discussion on the web, visit https://groups.google.com/d/msgid/vertx/137ec0cb-3471-4acc-8829-23d94e96b5e7%40googlegroups.com.
BridgeOptions bo = new BridgeOptions()...
.addOutboundPermitted(new PermittedOptions().setAddressRegex("service.ui-taskitem-[a-f0-9\\-]+"));
router.route("/live/" + id + "/*").handler(context -> {
System.out.println("hash code: " + hashCode());
});hash code: 939440626
hash code: 939440626
router.route("/live/" + id + "/*").handler(context -> {
System.out.println("hash code: " + hashCode());
context.next();
});router.get("/v1/connect/:id").handler(context -> {
String id = context.request().getParam("id");deployed verticle 7341c0b7-328a-4255-bda8-111c910b3284
deployment id: 7341c0b7-328a-4255-bda8-111c910b3284
deployed verticle 94ce1033-218e-4fd5-a043-35acaa7cbeb0
deployment id: 7341c0b7-328a-4255-bda8-111c910b3284
private Route route;
...
public void start() {
route = router.route("/live/" + id + "/*");
route.handler(sockHandler());
}
public void stop() {
route.remove();
}