我的Websocket客户端(OkHttp)在应用程序关闭后没有关闭连接。每次我打开应用程序时,它都会打开一个新的连接,这使得应用程序从广播服务器接收到旧Websocket连接和新Websocket连接上的多个消息而受苦。
对于Android客户端来说,这是正常行为吗?就我与Web客户端的经验而言,在选项卡被关闭后,会正确关闭会话。
我已经在互联网上寻找了这个问题,但迄今为止没有运气。我想确保这是否是由于我的错误代码逻辑还是库中有错误的Websocket实现所致?
以下是我如何在主Activity中启动新的Websocket会话。
"最初的回答"
对于Android客户端来说,这是正常行为吗?就我与Web客户端的经验而言,在选项卡被关闭后,会正确关闭会话。
我已经在互联网上寻找了这个问题,但迄今为止没有运气。我想确保这是否是由于我的错误代码逻辑还是库中有错误的Websocket实现所致?
以下是我如何在主Activity中启动新的Websocket会话。
"最初的回答"
var request: Request = Request.Builder()
.url("ws://$serverIP:8080/example/sim/speed")
.build()
var webSocketListener: WebSocketListener = object : WebSocketListener() {
override fun callback(msg: Message) {
updateSpeed(msg.content)
}
override fun onClosing(webSocket: WebSocket?, code: Int, reason: String?) {
super.onClosing(webSocket, code, reason)
}
}
var webSocket = client!!.newWebSocket(request, webSocketListener)
之后,updateSpeed()
将在UIThread上更新文本视图。
onClosed
事件在应用程序关闭时没有被触发,但只有在手动调用close
函数时才会触发。
我确定每次它都打开了一个新的套接字,因为我可以看到在服务器上创建了具有不同端口的新会话。
我想要的是在应用程序关闭之前关闭其连接。
谢谢