0
的ChannelInitializer.initChannel
方法被調用爲每個新連接,了Netty 4:在不同的流水線份額處理器
pipeline.addLast(new HttpServerCodec());
pipeline.addLast(new HttpObjectAggregator(65536));
pipeline.addLast(new ServerWebSocketServerProtocolHandler("/api", "*", false));
我可以重用所有連接相同的實例?如何判斷特定處理程序是否可以跨多個連接重用?
你確定'HttpServerCodec'和'HttpObjectAggregatorare'是可共享的嗎?我檢查了它們的源代碼,它們沒有用'@ Sharable'註釋 https://github.com/netty/netty/blob/f6c16f4897ce395011c70c0351a0ddc3d6c21337/codec-http/src/main/java/io/netty/handler /codec/http/HttpObjectAggregator.java https://github.com/netty/netty/blob/83c349ffa94d3992c4ee511d3625afc0c97c12bb/codec-http/src/main/java/io/netty/handler/codec/http/HttpServerCodec.java –
對不起,你完全正確。他們不可共享,因爲他們自己不使用註釋。我被文檔的繼承摘要誤導了,這隻意味着班級知道註釋。 所以非提及的處理程序是可共享的,因爲它們都已滿狀態。 –