|
|
@@ -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)
|