MCPcopy Create free account
hub / github.com/LagrangeDev/LagrangeGo / connect

Method connect

client/network.go:115–167  ·  view source on GitHub ↗

connect 连接到 QQClient.servers 中的服务器

()

Source from the content-addressed store, hash-verified

113
114// connect 连接到 QQClient.servers 中的服务器
115func (c *QQClient) connect() error {
116 // init qq servers
117 c.initServerOnce.Do(c.initServers)
118
119 addr := c.servers[c.currServerIndex].String()
120 c.info("connect to server: %v", addr)
121 err := c.TCP.Connect(addr)
122 c.currServerIndex++
123 if c.currServerIndex == len(c.servers) {
124 c.currServerIndex = 0
125 }
126 if err != nil {
127 c.retryTimes++
128 if c.retryTimes > len(c.servers) {
129 return errors.New("All servers are unreachable")
130 }
131 c.error("connect server error: %v", err)
132 return err
133 }
134 c.once.Do(func() {
135 c.SelfGroupMessageEvent.Subscribe(func(_ *QQClient, _ *message.GroupMessage) {
136 c.stat.MessageReceived.Add(1)
137 c.stat.LastMessageTime.Store(time.Now().Unix())
138 })
139 c.GroupMessageEvent.Subscribe(func(_ *QQClient, _ *message.GroupMessage) {
140 c.stat.MessageReceived.Add(1)
141 c.stat.LastMessageTime.Store(time.Now().Unix())
142 })
143 c.SelfPrivateMessageEvent.Subscribe(func(_ *QQClient, _ *message.PrivateMessage) {
144 c.stat.MessageReceived.Add(1)
145 c.stat.LastMessageTime.Store(time.Now().Unix())
146 })
147 c.PrivateMessageEvent.Subscribe(func(_ *QQClient, _ *message.PrivateMessage) {
148 c.stat.MessageReceived.Add(1)
149 c.stat.LastMessageTime.Store(time.Now().Unix())
150 })
151 c.SelfTempMessageEvent.Subscribe(func(_ *QQClient, _ *message.TempMessage) {
152 c.stat.MessageReceived.Add(1)
153 c.stat.LastMessageTime.Store(time.Now().Unix())
154 })
155 c.TempMessageEvent.Subscribe(func(_ *QQClient, _ *message.TempMessage) {
156 c.stat.MessageReceived.Add(1)
157 c.stat.LastMessageTime.Store(time.Now().Unix())
158 })
159 c.onGroupMessageReceipt("internal", func(_ *QQClient, _ *groupMessageReceiptEvent) {
160 c.stat.MessageSent.Add(1)
161 })
162 go c.netLoop()
163 })
164 c.retryTimes = 0
165 c.ConnectTime = time.Now()
166 return nil
167}
168
169// quickReconnect 快速重连
170func (c *QQClient) quickReconnect() {

Callers 6

ReloginMethod · 0.95
FetchQRCodeMethod · 0.95
PasswordLoginMethod · 0.95
FastLoginMethod · 0.95
quickReconnectMethod · 0.95
unexpectedDisconnectMethod · 0.95

Calls 7

infoMethod · 0.95
errorMethod · 0.95
onGroupMessageReceiptMethod · 0.95
netLoopMethod · 0.95
ConnectMethod · 0.80
SubscribeMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected