Clears the socket from memory upon closing.
This commit is contained in:
+11
-2
@@ -40,6 +40,8 @@ class OkHttpWebSocket(
|
|||||||
fun buildRequest() = Request.Builder().url(url.url).build()
|
fun buildRequest() = Request.Builder().url(url.url).build()
|
||||||
|
|
||||||
override fun needsReconnect(): Boolean {
|
override fun needsReconnect(): Boolean {
|
||||||
|
if (socket == null) return true
|
||||||
|
|
||||||
val myUsingOkHttp = usingOkHttp
|
val myUsingOkHttp = usingOkHttp
|
||||||
if (myUsingOkHttp == null) return true
|
if (myUsingOkHttp == null) return true
|
||||||
|
|
||||||
@@ -89,13 +91,19 @@ class OkHttpWebSocket(
|
|||||||
webSocket: okhttp3.WebSocket,
|
webSocket: okhttp3.WebSocket,
|
||||||
code: Int,
|
code: Int,
|
||||||
reason: String,
|
reason: String,
|
||||||
) = out.onClosed(code, reason)
|
) {
|
||||||
|
socket = null
|
||||||
|
out.onClosed(code, reason)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onFailure(
|
override fun onFailure(
|
||||||
webSocket: okhttp3.WebSocket,
|
webSocket: okhttp3.WebSocket,
|
||||||
t: Throwable,
|
t: Throwable,
|
||||||
response: Response?,
|
response: Response?,
|
||||||
) = out.onFailure(t, response?.code, response?.message)
|
) {
|
||||||
|
socket = null
|
||||||
|
out.onFailure(t, response?.code, response?.message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Builder(
|
class Builder(
|
||||||
@@ -111,6 +119,7 @@ class OkHttpWebSocket(
|
|||||||
override fun disconnect() {
|
override fun disconnect() {
|
||||||
// uses cancel to kill the SEND stack that might be waiting
|
// uses cancel to kill the SEND stack that might be waiting
|
||||||
socket?.cancel()
|
socket?.cancel()
|
||||||
|
socket = null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun send(msg: String): Boolean = socket?.send(msg) ?: false
|
override fun send(msg: String): Boolean = socket?.send(msg) ?: false
|
||||||
|
|||||||
+2
-1
@@ -207,7 +207,8 @@ open class BasicRelayClient(
|
|||||||
code: Int?,
|
code: Int?,
|
||||||
response: String?,
|
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.
|
// 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"))) {
|
if (!(socket == null && (t.message == "Socket is closed" || t.message == "Socket closed"))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user