1
1
package com.jeremy.thunder
2
2
3
+ import com.jeremy.thunder.event.WebSocketEvent
3
4
import kotlinx.coroutines.channels.BufferOverflow
4
5
import kotlinx.coroutines.flow.Flow
5
6
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -8,37 +9,44 @@ import okhttp3.Response
8
9
import okhttp3.WebSocket
9
10
import okhttp3.WebSocketListener
10
11
import okio.ByteString
12
+ import java.nio.charset.Charset
11
13
12
14
class SocketListener : WebSocketListener (), EventCollector {
13
15
14
- private val _eventFlow = MutableSharedFlow < com.jeremy.thunder.event. WebSocketEvent > (
16
+ private val _eventFlow = MutableSharedFlow <WebSocketEvent >(
15
17
replay = 1 ,
16
18
extraBufferCapacity = DEFAULT_BUFFER ,
17
19
onBufferOverflow = BufferOverflow .DROP_OLDEST
18
20
)
19
21
20
- override fun collectEvent (): Flow <com.jeremy.thunder.event. WebSocketEvent > {
22
+ override fun collectEvent (): Flow <WebSocketEvent > {
21
23
return _eventFlow .asSharedFlow()
22
24
}
23
25
24
26
override fun onOpen (webSocket : WebSocket , response : Response ) {
25
- _eventFlow .tryEmit(com.jeremy.thunder.event. WebSocketEvent .OnConnectionOpen (webSocket))
27
+ _eventFlow .tryEmit(WebSocketEvent .OnConnectionOpen (webSocket))
26
28
}
27
29
28
30
override fun onMessage (webSocket : WebSocket , bytes : ByteString ) {
29
- _eventFlow .tryEmit(com.jeremy.thunder.event.WebSocketEvent .OnMessageReceived (bytes.toString()))
31
+ _eventFlow .tryEmit(
32
+ WebSocketEvent .OnMessageReceived (
33
+ bytes.string(
34
+ Charset .defaultCharset()
35
+ )
36
+ )
37
+ )
30
38
}
31
39
32
40
override fun onMessage (webSocket : WebSocket , text : String ) {
33
- _eventFlow .tryEmit(com.jeremy.thunder.event. WebSocketEvent .OnMessageReceived (text))
41
+ _eventFlow .tryEmit(WebSocketEvent .OnMessageReceived (text))
34
42
}
35
43
36
44
override fun onClosed (webSocket : WebSocket , code : Int , reason : String ) {
37
- _eventFlow .tryEmit(com.jeremy.thunder.event. WebSocketEvent .OnConnectionClosed )
45
+ _eventFlow .tryEmit(WebSocketEvent .OnConnectionClosed )
38
46
}
39
47
40
48
override fun onFailure (webSocket : WebSocket , t : Throwable , response : Response ? ) {
41
- _eventFlow .tryEmit(com.jeremy.thunder.event. WebSocketEvent .OnConnectionError (t.message))
49
+ _eventFlow .tryEmit(WebSocketEvent .OnConnectionError (t.message))
42
50
}
43
51
44
52
companion object {
0 commit comments