Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netty客户端能否将ChannelHandler中的服务器与其重新连接';这是什么背景?_Netty - Fatal编程技术网

Netty客户端能否将ChannelHandler中的服务器与其重新连接';这是什么背景?

Netty客户端能否将ChannelHandler中的服务器与其重新连接';这是什么背景?,netty,Netty,我想实现断开/重新连接机制 我已经看到,大多数时候重新连接将创建一个新的引导,我想知道是否有可能在ChannelHandler中重新连接 例如,如果客户端捕获一个WRITE_IDLE事件,它是否可以关闭通道并在ChannelHandler中重新连接它,如下所示 @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { if (evt

我想实现断开/重新连接机制

我已经看到,大多数时候重新连接将创建一个新的引导,我想知道是否有可能在ChannelHandler中重新连接

例如,如果客户端捕获一个WRITE_IDLE事件,它是否可以关闭通道并在ChannelHandler中重新连接它,如下所示

@Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt instanceof IdleStateEvent) {
            IdleState state= ((IdleStateEvent) evt).state();
            if (state == IdleState.WRITER_IDLE) {
                // read timeout, break the channel
                System.out.println("client write timeout");
                SocketAddress remoteAddress = ctx.channel().remoteAddress();
                // close channel
                ctx.channel().close();
                // reconnect
                ctx.connect(remoteAddress);

            }
        }
    }

我对它进行了多次测试,但都不起作用。

频道和ChannelHandlerContext无法重新连接。一旦它关闭,它的“生命”就结束了。您将需要再次引导。

如何在引导中感知频道的状态变化?我是否应该在每次发送消息时检查频道是否处于活动状态?