我想根据后端流程向client
发送多个响应。但在Netty
示例中,我看到echo server
同时发送回response
。
我的要求是,我需要验证客户端并向他发送OK响应,然后在可用时向他发送DB
更新。
如何向responses
发送更多client
?请指导我一个例子或任何指南?
答案 0 :(得分:1)
在管道中的每一点,您都可以从Channel对象(或MessageEvent)获取管道ChannelEvent对象,该对象从处理程序传递到处理程序。您可以使用此信息在管道中的不同点发送多个响应。
如果我们将echo服务器示例作为基础,我们可以添加一个再次发送echo的处理程序(也可以在同一个处理程序中完成,但示例是显示多个处理程序可以响应)。
public class EchoServerHandler extends ChannelHandlerAdapter {
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
Channel ch = e.getChannel();
// first message
ch.write(e.getMessage());
}
// ...
}
public class EchoServerHandler2 extends ChannelHandlerAdapter {
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
Channel ch = e.getChannel();
// send second message
ch.write(e.getMessage());
}
// ...
}
答案 1 :(得分:0)
只要您引用了相关的Channel
(或ChannelHandlerContext
),就可以这样做。例如,您可以这样做:
public class MyHandler extends ChannelHandlerAdapter {
...
public void channelRead(ctx, msg) {
MyRequest req = (MyRequest) msg;
ctx.write(new MyFirstResponse(..));
executor.execute(new Runnable() {
public void run() {
// Perform database operation
..
ctx.write(new MySecondResponse(...));
}
}
}
...
}
答案 2 :(得分:0)
只要Netty没有关闭频道,您就可以这样做。当你完成时,你最好自己调用close()。