在我的 netty 客户端中,我有一个仅包含 ChannelInboundHandlerAdapter 的初始管道。通过这个处理程序,我可以处理协议(protocol)的握手。之后我需要修改管道才能正常使用。这意味着我需要删除 ChannelInboundHandlerAdapter 并添加 LengthFieldPrepender/LengthFieldBasedFrameDecoder、编码器/解码器和处理程序。
最好的方法是什么?
最佳答案
channel 处理程序的上下文具有 channel
。您获取管道,并按所需顺序添加新的 channel 处理程序。最后,删除协商处理程序。
所有这些都应该在协商 channel 处理程序内部完成,作为其最后的步骤。单个 channel 上的操作是在该 channel 的事件循环(读取“线程”)上以顺序方式执行的,因此 channel 内不存在竞争条件。
关于java - Netty - 其他握手管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47062447/