2

タイムアウトが 5 秒のときに別の URL にリダイレクトしたい。

私が持っているコード:

private void timeout(RoutingContext handler) {
    vertx.setPeriodic(5000, new Handler<Long>() {
        @Override
        public void handle(Long aLong) {
            System.out.println("Session expired : " + aLong);       
            handler.response().putHeader("location","/logout").setStatusCode(302).end();
        }
    });
}

私が得るエラーは次のとおりです。

java.lang.IllegalStateException: Response has already been written"
4

2 に答える 2

0

定期的なタイマーではなく、単純なタイマーが必要です。

private void timeout(RoutingContext ctx) {
    long tid = ctx.vertx().setTimer(5000, t -> {
        ctx.response().putHeader("location","/logout").setStatusCode(302).end();
    });
    ctx.addBodyEndHandler(v -> ctx.vertx().cancelTimer(tid));
}

タイムアウトがない場合に備えて、タイマーをキャンセルすることを忘れないでください!

于 2016-02-15T12:15:09.507 に答える