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) {
42
42
continue
43
43
} else {
44
44
log .Infof ("已连接Websocket %v" , WsUrl )
45
+ go ping (cli , conn )
45
46
go listenApi (cli , conn )
46
47
Conn = conn
47
48
time .Sleep (1 * time .Second )
@@ -53,15 +54,34 @@ func ConnectUniversal(cli *client.QQClient) {
53
54
}
54
55
}
55
56
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
+
56
73
func listenApi (cli * client.QQClient , conn * websocket.Conn ) {
57
74
defer conn .Close ()
58
75
59
76
for {
60
- _ , buf , err := conn .ReadMessage ()
77
+ messageType , buf , err := conn .ReadMessage ()
61
78
if err != nil {
62
79
log .Warnf ("监听反向WS API时出现错误: %v" , err )
63
80
break
64
81
}
82
+ if messageType == websocket .PingMessage || messageType == websocket .PongMessage {
83
+ continue
84
+ }
65
85
66
86
var req onebot.Frame
67
87
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) {
180
180
181
181
bot .ConnectUniversal (bot .Cli )
182
182
183
- bot .SetRelogin (bot .Cli , 30 , 30 )
183
+ bot .SetRelogin (bot .Cli , 10 , 30 )
184
184
}
You can’t perform that action at this time.
0 commit comments