Netty 4:在不同管道中共享处理程序

Netty 4 : share handler in different pipeline

每个新连接都会调用ChannelInitializer.initChannel方法,

pipeline.addLast(new HttpServerCodec());
pipeline.addLast(new HttpObjectAggregator(65536));
pipeline.addLast(new ServerWebSocketServerProtocolHandler("/api", "*", false));

我可以为所有连接重复使用同一个实例吗?如何判断特定处理程序是否可跨多个连接重用?

可以重用的处理程序用 @Sharable 注释,这意味着保证无状态。

请继续查看不同处理程序的文档。

例如 HttpServerCodecHttpObjectAggregator 可以共享。

最后一个处理程序可能是您实现的自定义处理程序,至少我不熟悉它。这取决于你的实现。

否则,您可以通过创建前两个处理程序的静态实例来重用它们,并只为每个连接重新创建最后一个处理程序。