File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed
Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ func ConnectUniversal(cli *client.QQClient) {
4242 continue
4343 } else {
4444 log .Infof ("已连接Websocket %v" , WsUrl )
45+ go ping (cli , conn )
4546 go listenApi (cli , conn )
4647 Conn = conn
4748 time .Sleep (1 * time .Second )
@@ -53,15 +54,34 @@ func ConnectUniversal(cli *client.QQClient) {
5354 }
5455}
5556
57+ func ping (cli * client.QQClient , conn * websocket.Conn ) {
58+ errCount := 0
59+ for errCount < 5 {
60+ if err := conn .WriteMessage (websocket .PingMessage , []byte ("ping" )); err != nil {
61+ log .Warnf ("websocket ping失败" )
62+ errCount ++
63+ } else {
64+ errCount = 0
65+ }
66+ time .Sleep (10 * time .Second )
67+ }
68+ log .Warnf ("websocket 连续ping失败5次,断开连接" )
69+ _ = conn .Close ()
70+ ConnectUniversal (cli )
71+ }
72+
5673func listenApi (cli * client.QQClient , conn * websocket.Conn ) {
5774 defer conn .Close ()
5875
5976 for {
60- _ , buf , err := conn .ReadMessage ()
77+ messageType , buf , err := conn .ReadMessage ()
6178 if err != nil {
6279 log .Warnf ("监听反向WS API时出现错误: %v" , err )
6380 break
6481 }
82+ if messageType == websocket .PingMessage || messageType == websocket .PongMessage {
83+ continue
84+ }
6585
6686 var req onebot.Frame
6787 err = proto .Unmarshal (buf , & req )
Original file line number Diff line number Diff line change @@ -180,5 +180,5 @@ func CreateBotImpl(uin int64, password string) {
180180
181181 bot .ConnectUniversal (bot .Cli )
182182
183- bot .SetRelogin (bot .Cli , 30 , 30 )
183+ bot .SetRelogin (bot .Cli , 10 , 30 )
184184}
You can’t perform that action at this time.
0 commit comments