From 33016a2f322a341bc31d94b2b1fd27ab98168e0e Mon Sep 17 00:00:00 2001 From: Florent CHAMPIGNY Date: Sun, 5 Oct 2025 14:25:08 +0200 Subject: [PATCH] Feat network websocket (#306) Co-authored-by: Florent Champigny --- .../flocon/plugins/network/FloconNetworkPlugin.kt | 5 ++++- .../plugins/network/model/FloconWebSocketEvent.kt | 4 ++-- .../flocon/okhttp/websocket/FloconWebSocket.kt | 13 +++++++++++++ .../flocon/okhttp/websocket/FloconWebSocket.kt | 4 ++-- 4 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 FloconAndroid/okhttp-interceptor-no-op/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt index c2e0eca5..b253066a 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt @@ -1,5 +1,6 @@ package io.github.openflocon.flocon.plugins.network +import io.github.openflocon.flocon.FloconApp import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.plugins.network.model.BadQualityConfig import io.github.openflocon.flocon.plugins.network.model.FloconNetworkCallRequest @@ -7,7 +8,9 @@ import io.github.openflocon.flocon.plugins.network.model.FloconNetworkCallRespon import io.github.openflocon.flocon.plugins.network.model.FloconWebSocketEvent import io.github.openflocon.flocon.plugins.network.model.MockNetworkResponse - +fun floconLogWebSocketEvent(event: FloconWebSocketEvent) { + FloconApp.instance?.client?.networkPlugin?.logWebSocket(event) +} interface FloconNetworkPlugin : FloconPlugin { val mocks: Collection diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/model/FloconWebSocketEvent.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/model/FloconWebSocketEvent.kt index 5c0cc973..59c26809 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/model/FloconWebSocketEvent.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/model/FloconWebSocketEvent.kt @@ -2,11 +2,11 @@ package io.github.openflocon.flocon.plugins.network.model class FloconWebSocketEvent( val websocketUrl: String, - val timeStamp: Long, val event: Event, - val size: Long, + val size: Long = 0L, val message: String? = null, val error: Throwable? = null, + val timeStamp: Long = System.currentTimeMillis(), ) { enum class Event { Closed, diff --git a/FloconAndroid/okhttp-interceptor-no-op/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt b/FloconAndroid/okhttp-interceptor-no-op/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt new file mode 100644 index 00000000..9dca5a61 --- /dev/null +++ b/FloconAndroid/okhttp-interceptor-no-op/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt @@ -0,0 +1,13 @@ +package io.github.openflocon.flocon.okhttp.websocket + +import okhttp3.WebSocket +import okhttp3.WebSocketListener +import okio.ByteString + + +fun WebSocket.sendWithFlocon(text: String) = this.send(text) // simple method call, adds no flocon override +fun WebSocket.sendWithFlocon(bytes: ByteString) = this.send(bytes) // simple method call, adds no flocon override + +fun WebSocketListener.listenWithFlocon(): WebSocketListener { + return this +} \ No newline at end of file diff --git a/FloconAndroid/okhttp-interceptor/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt b/FloconAndroid/okhttp-interceptor/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt index ec2bf606..fe50def1 100644 --- a/FloconAndroid/okhttp-interceptor/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt +++ b/FloconAndroid/okhttp-interceptor/src/main/java/io/github/openflocon/flocon/okhttp/websocket/FloconWebSocket.kt @@ -1,6 +1,7 @@ package io.github.openflocon.flocon.okhttp.websocket import io.github.openflocon.flocon.FloconApp +import io.github.openflocon.flocon.plugins.network.floconLogWebSocketEvent import io.github.openflocon.flocon.plugins.network.model.FloconWebSocketEvent import okhttp3.Response import okhttp3.WebSocket @@ -16,10 +17,9 @@ object FloconWebSocket { error: Throwable? = null, ) { val size = message?.toByteArray()?.size?.toLong() - FloconApp.instance?.client?.networkPlugin?.logWebSocket( + floconLogWebSocketEvent( FloconWebSocketEvent( websocketUrl = webSocket.request().url.toString(), - timeStamp = System.currentTimeMillis(), event = event, message = message, error = error,