如何使用netty框架进行长轮询?比如说我拿http://localhost/waitforx
但是waitforx
是异步的,因为它必须等待一个事件?例如,它从阻塞队列中获取一些东西(只能在队列中有数据时获取)。从队列中获取项目时,我想将数据发送回客户端。希望有人可以给我一些提示如何做到这一点。
非常感谢
如何使用netty框架进行长轮询?比如说我拿http://localhost/waitforx
但是waitforx
是异步的,因为它必须等待一个事件?例如,它从阻塞队列中获取一些东西(只能在队列中有数据时获取)。从队列中获取项目时,我想将数据发送回客户端。希望有人可以给我一些提示如何做到这一点。
非常感谢
您可以先编写响应标头,然后再从其他线程发送正文(内容)。
void messageReceived(...) {
HttpResponse res = new DefaultHttpResponse(...);
res.setHeader(...);
...
channel.write(res);
}
// In a different thread..
ChannelBuffer partialContent = ...;
channel.write(partialContent);
您可以使用netty-socketio项目。它是支持长轮询的Socket.IO服务器的实现。在网页端,您可以使用Socket.IO 客户端JavaScript 库。
您还可以在 [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 导致通信是同步的。