Correctly shutting down a websocket handler
by Robin Anil
When a client disconnects, I see that onClose is not being fired. The only
way this seems to be firing if client sents a close frame.
Is there any way to detect disconnection and immediately close all the
opened resources.
Robin
Robin Anil | Software Engineer
1 year, 2 months
Delay execution of a HttpHandler
by Bill O'Neil
Hello,
I'm looking for a way to add artificial latency to requests and I'm having
trouble finding a way that wouldn't require a blocking pool with 1 thread
per request.
What I would like to happen if possible.
handler marks exchange as not ready (yield / pause)
async runnable from another thread marks it ready to resume after some time
next iteration of IO loop catches that it is ready and actually executes it
now.
public void handle(HttpServerExchange exchange) {
if (firstExecution) {
scheduledExec.schedule(() -> exchange.resume(), duration, unit);
return;
}
next.handle(exchange);
}
Is something like this possible while staying on the IO threads the whole
time other than the ScheduledExecutorService? I was thinking of using
dispatch and dispatching back to the IO executor but I don't think that
will do what I intend.
The end goal would be a way to handle N requests with various delays built
in to simulate latency without blocking connections. For instance if the
worker pool has 30 threads and I submit 100 requests with a 1 minute delay
followed by 1 request with a 10 second delay the final request should come
back first.
Thanks,
Bill
5 years, 10 months