1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00
This commit is contained in:
Mrs4s 2020-07-21 18:49:01 +08:00
parent a7e460246f
commit 569bcdc7b1

View File

@ -555,18 +555,26 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte) (interface{}, error) {
func (c *QQClient) loop() {
reader := binary.NewNetworkReader(c.Conn)
retry := 0
for c.Online {
l, err := reader.ReadInt32()
if err == io.EOF || err == io.ErrClosedPipe {
err = c.connect()
if err != nil {
c.Online = false
return
c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: "Connection lost."})
break
}
reader = binary.NewNetworkReader(c.Conn)
c.registerClient()
}
if l <= 0 {
retry++
time.Sleep(time.Second * 3)
if retry > 10 {
c.Online = false
c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: "Connection lost."})
}
continue
}
data, err := reader.ReadBytes(int(l) - 4)
@ -582,6 +590,7 @@ func (c *QQClient) loop() {
continue
}
}
retry = 0
//fmt.Println(pkt.CommandName)
go func() {
decoder, ok := c.decoders[pkt.CommandName]