如何使用 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 在连接变为非活动状态后重新连接的主要内容,如果未能解决你的问题,请参考以下文章

显示视图时 UITableView 变为非活动状态

按钮在编程动态 stackView (Swift) 中变为非活动状态

Cocoa/Objective-C - 带有文本输入的子窗口,而主窗口没有变为非活动状态

使用搜索栏时无法使表格视图处于非活动状态。苹果手机

如何使 PHFComposeBarView 控件在 Swift iOS 应用程序中变为活动状态?

即使 App 处于非活动状态也显示 Alertview