NettyIM
NettyIM copied to clipboard
Websocket 断开重连时,握手慢导致无法建立重连的问题
室外条件有时候网络状况不太好,有的设备经常断开重连发现的问题,网络不太好如果握手未完成,发送心跳,会导致整个流程卡在心跳包发送
既没有连接状态的回调,也不触发心跳超时的重连逻辑。
正常的应该是先回调Connect Success 然后发送心跳包,完成整个重连流程
我在 RealConnection.ChannelInitializerHandler WebSocket的逻辑中添加了握手完成的判断,再发送心跳后
webSocketHandler.handshakeFuture().addListener((ChannelFutureListener) future -> {
if (future.isSuccess()) {
// 连接成功,启动心跳机制
if (heartBeatMsg != null) { //设置了心跳包,则里面启动心跳机制
addHeartbeatHandler(pipeline, connectionPool, heartbeatInterval, readerIdleTime, readerIdleReconnectEnabled);
}
} else {
// 连接失败处理
release(false);
}
}
);
暂时没有再碰到之前的问题