首页 > 解决方案 > 有没有比在处理程序中实现方法更好的方法从 netty 调用方法?

问题描述

这是一个简单的问题。Netty 似乎是在服务器和客户端之间发送信息的好工具。我想发送信息,还有事件..或者更确切地说是指示做什么。

public class PojoServerHandler extends ChannelInboundHandlerAdapter {
    private Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {

        Message body = (Message) msg;
        logger.info("server read msg id:{}, body:{}", body.getId(), body.getBody());

        Message response = new Message();
        response.setId(1024);
        response.setFrom("server");
        response.setBody("hello from server");
        ctx.writeAndFlush(response);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        logger.error("server caught exception", cause);
        ctx.close();
    }

}

我在这里有这段代码,它描述了服务器的处理程序。当客户端将其消息发送到服务器时。channelRead将直接调用的方法。

如果我想在我的应用程序周围使用其他功能,实现switch case内部是否明智,或者 Netty 可以以其他方式做到这一点?channelRead

标签: javanetty

解决方案


可以有多个处理程序,每个处理程序执行不同的任务,而不是使用 switch case。你可以简单地打电话

ctx.fireChannelRead(msg);

如果您不打算在特定处理程序中处理消息,那么它将触发管道中的下一个处理程序。


推荐阅读