当前位置: 首页 > 知识库问答 >
问题:

动态变化的网状管道

弘焕
2023-03-14

我正在使用netty 4.0。25编写netty HTTP服务器的最终步骤。我需要根据HTTP GET请求中的一些参数在管道中添加各种处理程序。

pipeline.addLast(new HttpRequestDecoder(4096, 8192, 8192, false),
                 new HttpResponseEncoder(),
                 new HttpObjectAggregator(1048576),
                 decisionHandler
                 );

如果多个请求来自同一连接,则使用相同的管道。Request1可能需要Handler1,Request2可能需要Handler2,Request3可能需要Handler3。假设请求以Request1、Request2、Request3的形式出现。Request1将修改管道以添加Handler1。

>

或者我应该在转到下一个处理程序(FireChannelRead(对象))之前删除处理程序?是否会对性能产生影响?

还有别的办法吗?

谢啦

谷田

共有1个答案

彭梓
2023-03-14

动态操作管道是一项相对昂贵的操作。如果您试图实现的只是一个简单的交换用例,比如委托,那么您可以编写一个处理程序来实现它。例如:

public class SwitchCaseHandler extends ChannelInboundHandlerAdapter {

    private final ChannelInboundHandler handler1 = ...;
    private final ChannelInboundHandler handler2 = ...;
    private final ChannelInboundHandler handler3 = ...;
    ...

    @Override
    public void channelRead(ctx, msg) {
        if (isForHandler1(msg)) {
            handler1.channelRead(ctx, msg);
        } else if (isForHandler2(msg)) {
            handler2.channelRead(ctx, msg);
        } ...
    }
}

请注意,handler[1 | 2 | 3]实际上不需要是ChannelInboundHandler。您可以定义一个非常简单的接口,如下所示:

public interface ChannelMessageHandler {
    void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception;
}
 类似资料:
  • 无状态管道是纯粹的功能,通过输入数据流动而不记住任何东西或引起可检测的副作用。 大多数管道是无状态的。 我们使用的CurrencyPipe和我们创建的长度管是无状态管的示例。 状态管道是能够管理它们转换的数据的状态的管道。 创建HTTP请求,存储响应并显示输出的管道是有状态的管道。 有状态管道应谨慎使用。 Angular 2提供 ,这是有状态的。 View Example 实现有状态管道 // n

  • 我有一些方程式,我想根据它进行计算并更新这些值。我找不到任何功能在任何逻辑与此有关。有什么办法实现这一点吗?

  • 来自服务器的数据以及是否挂起或导致错误 UI状态如切换,警报和错误消息 自定义主题,凭据和本地化 许多其他类型的状态 Redux using ng2-redux Angular Services and RxJS(推荐)

  • 管理应用程序状态是个难题。您需要在多个后端,Web workers和UI组件之间进行协调。 像Redux和Flux这样的模式旨在通过使这种协调更加明确来解决这个问题。在本文中,我将展示如何使用RxJS在几行代码中实现类似的模式。然后我将展示如何使用这种模式来实现一个简单的Angular 2应用。 在谈论架构模式时,我喜欢从描述其核心属性开始。你可以写在餐巾背上的东西。The devil, of c

  • 建议使用基于redux封装出来的rematch, anujs也自带了这个框架。 rematch的官网 https://github.com/rematch/rematch resolve: { alias: { react: "anujs", "react-dom": "anujs", rematch: "anujs/dist/Rematch.js

  • 本文向大家介绍Android 实时监测(监听)网络连接状态变化,包括了Android 实时监测(监听)网络连接状态变化的使用技巧和注意事项,需要的朋友参考一下 看了网上的很多,都不是自己想要的。所以自己就参考着写了一个。 实现这个的方法很多,我是想的这种,如果哪有不足,有bug的地方希望大家指出,共同进步。。。。 先简单说一下思路:网络变化时系统会发出广播。所以我们监听这个广播,利用接口回调通知a