long polling netty nio framework java

时间:2010-02-19 04:11:58

标签: java asynchronous nio long-polling netty

如何使用netty框架进行长轮询?比方说,我提取http://localhost/waitforx

但是waitforx是异步的,因为它必须等待事件?比如说它从阻塞队列中取出一些东西(只能在队列中的数据时获取)。从队列中获取项目时,我想将数据发送回客户端。希望有人可以给我一些如何做到这一点的提示。

非常感谢

3 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:3)

您可以使用netty-socketio项目。它是具有长轮询支持的Socket.IO服务器的实现。在网络方面,您可以使用Socket.IO client javascript lib。

答案 2 :(得分: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);

真正导致沟通同步。