@@ -9,7 +9,6 @@ import net.lz1998.mirai.alias.BFrameType
99import net.lz1998.mirai.ext.*
1010import net.lz1998.mirai.service.MyLoginSolver
1111import net.lz1998.mirai.utils.*
12- import net.lz1998.mirai.utils.toFrame
1312import net.mamoe.mirai.Bot
1413import net.mamoe.mirai.alsoLogin
1514import net.mamoe.mirai.event.events.BotEvent
@@ -27,8 +26,9 @@ class WebsocketBotClient(override var botId: Long, override var password: String
2726 override lateinit var bot: Bot
2827
2928
30- private var lastWsConnectTime: Long = 0
31- private lateinit var wsClient: WebSocket
29+ // private var lastWsConnectTime: Long = 0
30+
31+ private var wsClient: WebSocket ? = null
3232 private var httpClient: OkHttpClient = OkHttpClient .Builder ()
3333 .callTimeout(20 , TimeUnit .SECONDS )
3434 .connectTimeout(20 , TimeUnit .SECONDS )
@@ -47,11 +47,10 @@ class WebsocketBotClient(override var botId: Long, override var password: String
4747 GlobalScope .launch {
4848 val req = withContext(Dispatchers .IO ) { BFrame .parseFrom(bytes.toByteArray()) }
4949 val resp = onRemoteApi(req)
50- val ok = wsClient.send(resp.toByteArray().toByteString())
51- if (! ok) {
50+ val ok = wsClient? .send(resp.toByteArray().toByteString())
51+ if (! ok!! ) {
5252 wsConnect()
5353 }
54-
5554 }
5655 super .onMessage(webSocket, bytes)
5756 }
@@ -63,16 +62,19 @@ class WebsocketBotClient(override var botId: Long, override var password: String
6362
6463 override fun onClosed (webSocket : WebSocket , code : Int , reason : String ) {
6564 println (" websocket 已关闭" )
65+ wsClient = null
6666 super .onClosed(webSocket, code, reason)
6767 }
6868
6969 override fun onClosing (webSocket : WebSocket , code : Int , reason : String ) {
7070 println (" websocket正在关闭 $reason " )
71+ wsClient = null
7172 super .onClosing(webSocket, code, reason)
7273 }
7374
7475 override fun onFailure (webSocket : WebSocket , t : Throwable , response : Response ? ) {
7576 println (" websocket失败${t.message} " )
77+ wsClient = null
7678 t.printStackTrace()
7779 wsConnect()
7880 super .onFailure(webSocket, t, response)
@@ -82,16 +84,18 @@ class WebsocketBotClient(override var botId: Long, override var password: String
8284
8385 @Synchronized
8486 fun wsConnect () {
85- val now = System .currentTimeMillis()
86- if (now - lastWsConnectTime > 5000L ) {
87+ if (wsClient == null ) {
8788 println (" ws try connect" )
8889 wsClient = httpClient.newWebSocket(wsRequest, wsListener)
89- lastWsConnectTime = now
90- } else {
91- println (" wait ws reconnect interval 5s" )
9290 }
93- }
91+ // val now = System.currentTimeMillis()
92+ // if (now - lastWsConnectTime > 5000L) {
9493
94+ // lastWsConnectTime = now
95+ // } else {
96+ // println("wait ws reconnect interval 5s")
97+ // }
98+ }
9599
96100 override suspend fun initBot () {
97101 wsClient = httpClient.newWebSocket(wsRequest, wsListener)
@@ -156,8 +160,8 @@ class WebsocketBotClient(override var botId: Long, override var password: String
156160 override suspend fun onBotEvent (botEvent : BotEvent ) {
157161 val eventFrame = botEvent.toFrame() ? : return
158162 // TODO 写二进制还是json?配置
159- val ok = wsClient.send(eventFrame.toByteArray().toByteString())
160- if (! ok) {
163+ val ok = wsClient? .send(eventFrame.toByteArray().toByteString())
164+ if (! ok!! ) {
161165 wsConnect()
162166 }
163167 }
0 commit comments