Joyit 3 місяців тому
батько
коміт
0bc4d563e9
1 змінених файлів з 19 додано та 18 видалено
  1. 19 18
      hub.go

+ 19 - 18
hub.go

@@ -830,26 +830,27 @@ func (h *Hub) ConnectToServer(channel string, force bool, host *HostInfo, autoRe
 // 重试方式连接服务
 // 将会一直阻塞直到连接成功
 func (h *Hub) ConnectToServerX(channel string, force bool, host *HostInfo) {
-	if host == nil {
-		if h.connectHostFunc == nil {
-			log.Println("[ConnectToServerX] not connect host func found")
-			return
-		}
-		host, err := h.connectHostFunc(channel, Direct)
-		if err != nil {
-			log.Println("[ConnectToServerX] connectHostFunc:", err)
-		}
-		if host == nil {
-			log.Println("[ConnectToServerX] not host found for channel:", channel)
-			return
-		}
-	}
 	for {
-		err := h.ConnectToServer(channel, force, host, true)
-		if err == nil {
-			return
+		if host == nil {
+			if h.connectHostFunc == nil {
+				log.Println("[ConnectToServerX] not connect host func found")
+				return
+			}
+			hx, err := h.connectHostFunc(channel, Direct)
+			if err == nil {
+				err := h.ConnectToServer(channel, force, hx, true)
+				if err == nil {
+					return
+				}
+			}
+			log.Println("[ConnectToServerX] connectHostFunc error with channel:", channel, err)
+		} else {
+			err := h.ConnectToServer(channel, force, host, true)
+			if err == nil {
+				return
+			}
+			log.Println("[ConnectToServerX] connect failed:", channel, host.Url(), err)
 		}
-		log.Println("[ConnectToServerX] connect failed:", channel, host.Url(), err)
 		// 产生一个随机数避免刹间重连过载
 		delay := time.Duration(rand.Intn(h.cf.ConnectTimeout)+(h.cf.ConnectTimeout/2)) * time.Millisecond
 		log.Println("[ConnectToServerX] will reconnect with delay:", delay)