NettyIM icon indicating copy to clipboard operation
NettyIM copied to clipboard

Websocket 断开重连时,握手慢导致无法建立重连的问题

Open lpz0715 opened this issue 1 year ago • 0 comments

室外条件有时候网络状况不太好,有的设备经常断开重连发现的问题,网络不太好如果握手未完成,发送心跳,会导致整个流程卡在心跳包发送

微信截图_20241119155046

既没有连接状态的回调,也不触发心跳超时的重连逻辑。

正常的应该是先回调Connect Success 然后发送心跳包,完成整个重连流程 微信截图_20241119154840

我在 RealConnection.ChannelInitializerHandler WebSocket的逻辑中添加了握手完成的判断,再发送心跳后

webSocketHandler.handshakeFuture().addListener((ChannelFutureListener) future -> {
                                if (future.isSuccess()) {
                                    // 连接成功,启动心跳机制
                                    if (heartBeatMsg != null) { //设置了心跳包,则里面启动心跳机制
                                        addHeartbeatHandler(pipeline, connectionPool, heartbeatInterval, readerIdleTime, readerIdleReconnectEnabled);
                                    }
                                } else {
                                    // 连接失败处理
                                    release(false);
                                }
                            }
                    );

暂时没有再碰到之前的问题

lpz0715 avatar Nov 19 '24 08:11 lpz0715