Search code examples
javaasynchronousniolong-pollingnetty

long polling netty nio framework java


How can I do long-polling using netty framework? Say for example I fetch http://localhost/waitforx

but waitforx is asynchronous because it has to wait for an event? Say for example it fetches something from a blocking queue(can only fetch when data in queue). When getting item from queue I would like to sent data back to client. Hopefully somebody can give me some tips how to do this.

Many thanks


Solution

  • You could write a response header first, and then send the body (content) later from other thread.

    void messageReceived(...) {
        HttpResponse res = new DefaultHttpResponse(...);
        res.setHeader(...);
        ...
        channel.write(res);
    }
    
    // In a different thread..
    ChannelBuffer partialContent = ...;
    channel.write(partialContent);