当wifi关闭并再次打开时Websocket重新连接问题

问题描述 投票:0回答:1

我在与websocket重新连接时遇到问题。首次启动应用程序时,创建websocket连接没有问题。然后我关闭了wifi,几秒钟后又打开了wifi,我在onFailure回调中收到以下异常。

WS onFailure javax.net.ssl.SSLException: Read error: ssl=0xbf4618c0: I/O error during system call, Software caused connection abort
    E/Mqtt: WS onFailure java.io.InterruptedIOException: executor rejected
E/Mqtt: WS onFailure java.io.InterruptedIOException: executor rejected
E/Mqtt: WS onFailure java.io.InterruptedIOException: executor rejected
E/Mqtt: WS onFailure java.io.InterruptedIOException: executor rejected
E/Mqtt: WS onFailure java.io.InterruptedIOException: executor rejected

这是我的连接方法:

public fun connect()
{
    if(mConnecting)
        return

    mConnecting = true

    val request = Request.Builder().url(mSocketUrl).build()

    mWebSocket = mOkHttpClient.newWebSocket(request, this)
    mOkHttpClient.dispatcher().executorService().shutdown()

}

这里是websocket onFailure回调

override fun onFailure(webSocket: WebSocket?, t: Throwable, response: Response?)
{
    Log.e(TAG, "WS onFailure $t")

    mConnecting = false
    reconnect()
}

这是我的重新连接方法

    public fun reconnectMqtt()
    {
        if(mStopping)
            return

        if(mMqttConnection == null)
        {
            startMqtt()
            return
        }

        if(!mMqttConnection!!.mConnecting)
        {
//            mMqttConnection = null
//            startMqtt()

            Handler(Looper.getMainLooper()).postDelayed({
                mMqttConnection!!.connect()
            }, 1000)
        }
    }

我进行了很多搜索,但没有任何帮助。任何帮助将不胜感激。预先感谢!

android ssl websocket mqtt okhttp
1个回答
0
投票

问题在于连接方法中的这一行。

mOkHttpClient.dispatcher().executorService().shutdown()

关机方法不允许我重新连接websocket。这是释放资源所必需的。我将此方法调用转移到服务onDestroy。

© www.soinside.com 2019 - 2024. All rights reserved.