10

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

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

非常感谢

4

3 回答 3

10

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

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

// In a different thread..
ChannelBuffer partialContent = ...;
channel.write(partialContent);
于 2010-06-07T01:30:55.263 回答
3

您可以使用netty-socketio项目。它是支持长轮询的Socket.IO服务器的实现。在网页端,您可以使用Socket.IO 客户端JavaScript 库。

于 2012-04-07T12:08:38.787 回答
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);

true 导致通信是同步的。

于 2013-10-02T16:31:47.320 回答