@@ -8,31 +8,31 @@ import kotlinx.coroutines.flow.asSharedFlow
8
8
import kotlinx.coroutines.flow.filterNotNull
9
9
import kotlinx.coroutines.flow.launchIn
10
10
import kotlinx.coroutines.flow.onEach
11
+ import kotlinx.coroutines.flow.onStart
11
12
12
13
13
14
class OkHttpWebSocket internal constructor(
15
+ private val provider : ConnectionProvider ,
14
16
private val socketListener : SocketListener ,
15
17
private val socketHandler : SocketHandler ,
16
18
private val scope : CoroutineScope
17
19
) : WebSocket {
18
20
19
21
private val _event = MutableStateFlow < com.jeremy.thunder.event.WebSocketEvent ? > (null )
20
-
21
- init {
22
- socketListener.collectEvent().onEach {
22
+ override fun open () {
23
+ socketListener.collectEvent().onStart {
24
+ provider.provide(socketListener)
25
+ }.onEach {
26
+ _event .tryEmit(it)
23
27
when (it) {
24
- is com.jeremy.thunder.event. WebSocketEvent .OnConnectionOpen -> {
25
- socketHandler.open (it.webSocket as okhttp3.WebSocket )
28
+ is WebSocketEvent .OnConnectionOpen -> {
29
+ socketHandler.initWebSocket (it.webSocket as okhttp3.WebSocket )
26
30
}
27
- else -> _event .tryEmit(it)
31
+ else -> Unit
28
32
}
29
33
}.launchIn(scope)
30
34
}
31
35
32
- override fun open (webSocket : okhttp3.WebSocket ) {
33
- // ?
34
- }
35
-
36
36
override fun events (): Flow <com.jeremy.thunder.event.WebSocketEvent > {
37
37
return _event .asSharedFlow().filterNotNull()
38
38
}
@@ -54,12 +54,13 @@ class OkHttpWebSocket internal constructor(
54
54
}
55
55
56
56
class Factory (
57
- private val socketListener : SocketListener ,
57
+ private val provider : ConnectionProvider ,
58
58
private val scope : CoroutineScope
59
59
) : WebSocket.Factory {
60
60
override fun create (): WebSocket =
61
61
OkHttpWebSocket (
62
- socketListener = socketListener,
62
+ provider = provider ,
63
+ socketListener = SocketListener (),
63
64
socketHandler = SocketHandler (),
64
65
scope = scope
65
66
)
0 commit comments