WebSocketDemo icon indicating copy to clipboard operation
WebSocketDemo copied to clipboard

使用新的 Setting 重新创建连接,有时会出现连接很久的情况

Open WeDoX opened this issue 5 years ago • 0 comments

 /**
     * 通过 {@link ReconnectManager} 开始重接
     */
    public WebSocketManager reconnect() {
        disconnect = false;
        if (mReconnectManager == null) {
            mReconnectManager = getDefaultReconnectManager();
        }
        //设置新的Setting时,会出现链接需要很久的情况,原因是:reconnecting()返回true
        if (!mReconnectManager.reconnecting()) {
            mReconnectManager.startReconnect();
        }
        return this;
    }

    /**
     * 使用新的 Setting 重新创建连接,同时会销毁之前的连接
     */
    public WebSocketManager reconnect(WebSocketSetting setting) {
        disconnect = false;
        if (destroyed) {
            LogUtil.e(TAG, "This WebSocketManager is destroyed!");
            return this;
        }
        this.mSetting = setting;
        if (mWebSocket != null) {
            mWebSocket.destroy();
            mWebSocket = null;
        }
        start();//最后也会调用reconnect() 
        return this;
    }

我的解决:

   /**
     * 通过 {@link ReconnectManager} 开始重接
     */
    public WebSocketManager reconnect(boolean isNewSetting) {
        disconnect = false;
        if (mReconnectManager == null || isNewSetting) {//todo 新的setting时强制初始化
            mReconnectManager = getDefaultReconnectManager();
        }
        //todo 设置新的Setting时,会出现链接需要很久的情况,原因是:reconnecting()返回true
        if (!mReconnectManager.reconnecting()) {
            mReconnectManager.startReconnect();
        }
        return this;
    }

大佬,还有更好的解决方法吗?

WeDoX avatar Nov 18 '19 07:11 WeDoX