java - 有没有比在处理程序中实现方法更好的方法从 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
解决方案
可以有多个处理程序,每个处理程序执行不同的任务,而不是使用 switch case。你可以简单地打电话
ctx.fireChannelRead(msg);
如果您不打算在特定处理程序中处理消息,那么它将触发管道中的下一个处理程序。
推荐阅读
- azure - Azure 媒体播放器在 android 上给出“找不到此媒体 0x10600000 的兼容源”错误
- .net - 无法删除 PictureBox 中加载的图像文件
- python - Python Pinterest 机器人的时间等待问题
- javascript - 将 bytearray 转换为 pdf javascript
- javascript - 在组件的函数中调用道具函数“无法读取未定义的属性‘道具’”
- c# - 无法在另一台 PC 上打开 Visual Studio 解决方案
- react-native - 离开应用程序时 React Native 停止动画
- javascript - 如何将数字传递给元素
- c# - ref 或 out 参数必须是可分配的变量?
- node.js - 如何使用 node.js 将多个缓冲区对象上传到 AWS S3 中的同一个文件?