long polling netty nio framework java

10

如何使用netty框架进行长轮询?例如,我要获取http://localhost/waitforx,但是waitforx是异步的,因为它必须等待事件。例如,它从阻塞队列中获取某些内容(只有在队列中有数据时才能获取)。当从队列中获取项目时,我想发送数据回客户端。希望有人可以给我一些建议如何做到这一点。

非常感谢

3个回答

10

您可以先编写响应头,然后从其他线程稍后发送正文(内容)。

void messageReceived(...) {
    HttpResponse res = new DefaultHttpResponse(...);
    res.setHeader(...);
    ...
    channel.write(res);
}

// In a different thread..
ChannelBuffer partialContent = ...;
channel.write(partialContent);

这真的有效吗?你能从另一个线程写入通道吗?它是线程安全的吗? - PP.
1
“不同的线程”如何知道使用哪个通道?例如,客户端1进行长轮询,我是否需要将通道放入HashMap<clientId,Channel>中,并在事件发生后获取它,以便我可以发送部分内容? - pkrish

3

0

在 [sfnrpc] 中,您还可以执行以下操作:http://code.google.com/p/sfnrpc

Object object = RPCClient.getInstance().invoke("#URN1","127.0.0.1:6878","echo",true,60,"", objArr,classArr, sl);

真正的原因使通信变得同步。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接