sockets - 如何停止在 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")
}
}
解决方案
我找到了解决方案。我发现当应用程序使用后退按钮关闭时,它不会完全杀死应用程序。它被添加到后台线程中。当我再次打开应用程序时,它将创建另一个线程,导致多个套接字侦听。所以我所做的就是在这样调用 onDestroy 时完全杀死该应用程序:
override fun onDestroy() {
super.onDestroy()
android.os.Process.killProcess(android.os.Process.myPid())
}
推荐阅读
- r - Calculating memory usage in R Shiny Application
- ruby - How do I find the value which encompasses the most data points when combined with a tolerance?
- javascript - 通过 onclick 向 html 和 body 添加样式
- python - 当内核设置为无时,opencv Erosion 或 Dilation 将如何工作
- r - 当我使用 word2vec::word2vec 函数时,我在 R 服务器中反复退出会话
- regex - 正则表达式以升序选择匹配项
- java - spring boot 项目:应用程序运行失败但 gradle bootRun 在idea IDE中可以
- java - Gradle:“TaskExecutionException:任务':compileKotlin'的执行失败”
- java - 如何通过 localhost 将 SSL 与 ActiveMQ 一起使用
- c - 子进程无法完成,因为父进程先完成