Netty客户端能否将ChannelHandler中的服务器与其重新连接';这是什么背景?
我想实现断开/重新连接机制 我已经看到,大多数时候重新连接将创建一个新的引导,我想知道是否有可能在ChannelHandler中重新连接 例如,如果客户端捕获一个WRITE_IDLE事件,它是否可以关闭通道并在ChannelHandler中重新连接它,如下所示Netty客户端能否将ChannelHandler中的服务器与其重新连接';这是什么背景?,netty,Netty,我想实现断开/重新连接机制 我已经看到,大多数时候重新连接将创建一个新的引导,我想知道是否有可能在ChannelHandler中重新连接 例如,如果客户端捕获一个WRITE_IDLE事件,它是否可以关闭通道并在ChannelHandler中重新连接它,如下所示 @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { if (evt
@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无法重新连接。一旦它关闭,它的“生命”就结束了。您将需要再次引导。如何在引导中感知频道的状态变化?我是否应该在每次发送消息时检查频道是否处于活动状态?