1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

More Servers

This commit is contained in:
LXY1226 2020-08-02 18:50:53 +08:00
parent 0b3cb856c0
commit 220572f296

View File

@ -155,7 +155,7 @@ func (c *QQClient) Login() (*LoginResponse, error) {
if l.Success { if l.Success {
c.lastLostMsg = "" c.lastLostMsg = ""
c.registerClient() c.registerClient()
go c.heartbeat() c.startHeartbeat()
_, _ = c.sendAndWait(c.buildGetMessageRequestPacket(msg.SyncFlag_START, time.Now().Unix())) _, _ = c.sendAndWait(c.buildGetMessageRequestPacket(msg.SyncFlag_START, time.Now().Unix()))
} }
return &l, nil return &l, nil
@ -171,7 +171,7 @@ func (c *QQClient) SubmitCaptcha(result string, sign []byte) (*LoginResponse, er
l := rsp.(LoginResponse) l := rsp.(LoginResponse)
if l.Success { if l.Success {
c.registerClient() c.registerClient()
go c.heartbeat() c.startHeartbeat()
} }
return &l, nil return &l, nil
} }
@ -606,8 +606,18 @@ func (g *GroupInfo) removeMember(uin int64) {
} }
} }
var servers = []*net.TCPAddr{
{IP: net.IP{42, 81, 169, 46}, Port: 8080},
{IP: net.IP{42, 81, 172, 81}, Port: 80},
{IP: net.IP{114, 221, 148, 59}, Port: 14000},
{IP: net.IP{42, 81, 172, 147}, Port: 443},
{IP: net.IP{125, 94, 60, 146}, Port: 80},
{IP: net.IP{114, 221, 144, 215}, Port: 80},
{IP: net.IP{42, 81, 172, 22}, Port: 80},
}
func (c *QQClient) connect() error { func (c *QQClient) connect() error {
conn, err := net.Dial("tcp", "125.94.60.146:80") //TODO: more servers conn, err := net.DialTCP("tcp", nil, servers[rand.Intn(len(servers))])
if err != nil { if err != nil {
return err return err
} }
@ -687,6 +697,7 @@ func (c *QQClient) sendAndWait(seq uint16, pkt []byte) (interface{}, error) {
return rsp.Response, rsp.Error return rsp.Response, rsp.Error
case <-time.After(time.Second * 15): case <-time.After(time.Second * 15):
c.handlers.Delete(seq) c.handlers.Delete(seq)
println("Packet Timed out")
return nil, errors.New("time out") return nil, errors.New("time out")
} }
} }
@ -758,12 +769,16 @@ func (c *QQClient) loop() {
c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: c.lastLostMsg}) c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: c.lastLostMsg})
} }
func (c *QQClient) heartbeat() { func (c *QQClient) startHeartbeat() {
for c.Online { time.AfterFunc(30*time.Second, c.doHeartbeat)
time.Sleep(time.Second * 30) }
func (c *QQClient) doHeartbeat() {
if c.Online {
seq := c.nextSeq() seq := c.nextSeq()
sso := packets.BuildSsoPacket(seq, "Heartbeat.Alive", SystemDeviceInfo.IMEI, []byte{}, c.OutGoingPacketSessionId, []byte{}, c.ksid) sso := packets.BuildSsoPacket(seq, "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{})
_, _ = c.sendAndWait(seq, packet) _, _ = c.sendAndWait(seq, packet)
time.AfterFunc(30*time.Second, c.doHeartbeat)
} }
} }