如何使用 netty 4.0 在连接变为非活动状态后重新连接
Posted
技术标签:
【中文标题】如何使用 netty 4.0 在连接变为非活动状态后重新连接【英文标题】:how to reconnect after the connection becomes inactive using netty 4.0 【发布时间】:2014-01-01 11:54:39 【问题描述】:我有scanerio,一旦由于使用netty 4.0的任何原因连接变为非活动状态,我必须重新连接到服务器。代码应尝试重新连接,直到连接成功..以下是连接到服务器一次的代码。
Bootstrap b;
b.group(group);
b.channel(NiosocketChannel.class);
b.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000);
// b.option(ChannelOption., 10000);
b.handler(new ChannelInitializer<SocketChannel>()
@Override
public void initChannel(SocketChannel ch) throws Exception
ch.pipeline().addLast("frameDecoder", new DelimiterBasedFrameDecoder(bufferSize,bt));
ch.pipeline().addLast("ByteDecoder", new ByteArrayDecoder());
ch.pipeline().addLast("frameEncoder", new ByteArrayEncoder());
ch.pipeline().addLast (new TimeClientHandler (c));
);
System.out.println("Connecting Server");
this.host = host;
this.port = port;
try
f = b.connect(host, port).sync();
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();
【问题讨论】:
【参考方案1】:您应该向 connect(...) 返回的 ChannelFuture 添加一个 ChannelFutureListener 并检查未来是否失败。如果连接失败,您可以根据需要尝试重新连接。
【讨论】:
此外,您还需要处理断开连接。这是example以上是关于如何使用 netty 4.0 在连接变为非活动状态后重新连接的主要内容,如果未能解决你的问题,请参考以下文章
按钮在编程动态 stackView (Swift) 中变为非活动状态
Cocoa/Objective-C - 带有文本输入的子窗口,而主窗口没有变为非活动状态