Clears the socket from memory upon closing.

This commit is contained in:
Vitor Pamplona
2025-08-15 08:40:33 -04:00
parent 81db455bfb
commit c9b16309e2
2 changed files with 13 additions and 3 deletions
@@ -40,6 +40,8 @@ class OkHttpWebSocket(
fun buildRequest() = Request.Builder().url(url.url).build()
override fun needsReconnect(): Boolean {
if (socket == null) return true
val myUsingOkHttp = usingOkHttp
if (myUsingOkHttp == null) return true
@@ -89,13 +91,19 @@ class OkHttpWebSocket(
webSocket: okhttp3.WebSocket,
code: Int,
reason: String,
) = out.onClosed(code, reason)
) {
socket = null
out.onClosed(code, reason)
}
override fun onFailure(
webSocket: okhttp3.WebSocket,
t: Throwable,
response: Response?,
) = out.onFailure(t, response?.code, response?.message)
) {
socket = null
out.onFailure(t, response?.code, response?.message)
}
}
class Builder(
@@ -111,6 +119,7 @@ class OkHttpWebSocket(
override fun disconnect() {
// uses cancel to kill the SEND stack that might be waiting
socket?.cancel()
socket = null
}
override fun send(msg: String): Boolean = socket?.send(msg) ?: false
@@ -207,7 +207,8 @@ open class BasicRelayClient(
code: Int?,
response: String?,
) {
socket?.disconnect() // 1000, "Normal close"
// socket is already closed
// socket?.disconnect()
// checks if this is an actual failure. Closing the socket generates an onFailure as well.
if (!(socket == null && (t.message == "Socket is closed" || t.message == "Socket closed"))) {