mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-08 04:55:56 +08:00
fix heartbeat loop.
This commit is contained in:
parent
13560ec838
commit
b6a695d43d
@ -253,7 +253,7 @@ func (c *QQClient) init() {
|
|||||||
_ = c.registerClient()
|
_ = c.registerClient()
|
||||||
c.groupSysMsgCache, _ = c.GetGroupSystemMessages()
|
c.groupSysMsgCache, _ = c.GetGroupSystemMessages()
|
||||||
if !c.heartbeatEnabled {
|
if !c.heartbeatEnabled {
|
||||||
c.startHeartbeat()
|
go c.doHeartbeat()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1041,6 +1041,7 @@ func (c *QQClient) netLoop() {
|
|||||||
c.Error("connection dropped by server: %v", err)
|
c.Error("connection dropped by server: %v", err)
|
||||||
err = c.connect()
|
err = c.connect()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
c.Error("connect server error: %v", err)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
reader = binary.NewNetworkReader(c.Conn)
|
reader = binary.NewNetworkReader(c.Conn)
|
||||||
@ -1119,23 +1120,19 @@ func (c *QQClient) netLoop() {
|
|||||||
c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: c.lastLostMsg})
|
c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: c.lastLostMsg})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) startHeartbeat() {
|
|
||||||
c.heartbeatEnabled = true
|
|
||||||
time.AfterFunc(30*time.Second, c.doHeartbeat)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *QQClient) doHeartbeat() {
|
func (c *QQClient) doHeartbeat() {
|
||||||
if c.Online {
|
c.heartbeatEnabled = true
|
||||||
|
for c.Online {
|
||||||
seq := c.nextSeq()
|
seq := c.nextSeq()
|
||||||
sso := packets.BuildSsoPacket(seq, c.version.AppId, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid)
|
sso := packets.BuildSsoPacket(seq, c.version.AppId, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid)
|
||||||
packet := packets.BuildLoginPacket(c.Uin, 0, []byte{}, sso, []byte{})
|
packet := packets.BuildLoginPacket(c.Uin, 0, []byte{}, sso, []byte{})
|
||||||
_, err := c.sendAndWait(seq, packet)
|
_, err := c.sendAndWait(seq, packet)
|
||||||
if err == nil {
|
if err != nil {
|
||||||
time.AfterFunc(30*time.Second, c.doHeartbeat)
|
c.lastLostMsg = "Heartbeat failed: " + err.Error()
|
||||||
return
|
c.Disconnect()
|
||||||
|
break
|
||||||
}
|
}
|
||||||
c.lastLostMsg = "Heartbeat failed: " + err.Error()
|
time.Sleep(time.Second * 30)
|
||||||
c.Disconnect()
|
|
||||||
}
|
}
|
||||||
c.heartbeatEnabled = false
|
c.heartbeatEnabled = false
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user