首页 > 解决方案 > 如何停止在 kotlin 中重新连接以前的套接字对象?

问题描述

我目前正在开发一个聊天应用程序 android 项目,并且遇到了一个错误。我发现的错误是,当我打开应用程序时,套接字连接成功,但是当我退出应用程序并再次打开时,以前的套接字会创建一个连接。它重新连接。我已经将 IO.Options forceNew 添加为 true ,但它没有用。下面是我如何连接到服务器的代码片段

val opts = IO.Options()
        opts.forceNew = true
        opts.reconnection = false
        socket = IO.socket("https://test.com.ph:3000",opts)
        socket.connect()
        socket.on(Socket.EVENT_CONNECT) {
            activity.runOnUiThread {
                Timber.d("$MESSAGING_URL ==========> CONNECTED")
            }
        }

标签: socketskotlinsocket.ioio

解决方案


我找到了解决方案。我发现当应用程序使用后退按钮关闭时,它不会完全杀死应用程序。它被添加到后台线程中。当我再次打开应用程序时,它将创建另一个线程,导致多个套接字侦听。所以我所做的就是在这样调用 onDestroy 时完全杀死该应用程序:

override fun onDestroy() {
   super.onDestroy()
   android.os.Process.killProcess(android.os.Process.myPid())
}

推荐阅读