你会如何扩展频道?

时间:2012-01-14 20:06:44

标签: netty

我需要一点Netty的帮助。我想知道你如何扩展Channel接口并将自己的方法添加到它并使Netty使用它(或转换为它)?

2 个答案:

答案 0 :(得分:1)

答案是实际的净值4.1.25。最终。

首先扩展您的频道类型

this.router.navigate(['XXX/Update', id]);

如果您想将其用于客户端引导,只需将该类传递给它即可。

public class ExtendedNioChannel extends NioSocketChannel implements Channel {
    private volatile boolean handshakeComplete;
    // more custom fields and methods
}

对于服务器引导,您需要覆盖NioServerSocketChannel并将NioServerSocketChannel.class传递给ServerBootstrap。

 Bootstrap b = new Bootstrap();
                b.group(workerGroup);
                b.channel(ExtendedNioChannel.class);

答案 1 :(得分:0)

我想更好的解决方案是将Channel“封装”到ChannelLocal或ChannelHandlerContext中的类中。然后jsut检索您的实现并使用它。这将允许您在NIO和OIO之间切换,而无需担心实现。

我在niosmtp中做了类似的事情: https://github.com/normanmaurer/niosmtp/blob/master/src/main/java/me/normanmaurer/niosmtp/transport/netty/NettySMTPClientSession.java

这也可以帮助您解密代码。

要提供自己的频道,您需要破解套接字实现。但正如我认为你应该尽可能避免它。