1.
This commit is contained in:
		| @ -79,13 +79,17 @@ func (wm *BinanceWebSocketManager) Start() { | ||||
|  | ||||
| // 重启连接 | ||||
| func (wm *BinanceWebSocketManager) Restart(apiKey, apiSecret, proxyType, proxyAddress string) *BinanceWebSocketManager { | ||||
| 	wm.mu.Lock() | ||||
| 	defer wm.mu.Unlock() | ||||
|  | ||||
| 	wm.apiKey = apiKey | ||||
| 	wm.apiSecret = apiSecret | ||||
| 	wm.proxyType = proxyType | ||||
| 	wm.proxyAddress = proxyAddress | ||||
|  | ||||
| 	if wm.isStopped { | ||||
| 		wm.run() | ||||
| 		wm.isStopped = false | ||||
| 		utility.SafeGo(wm.run) | ||||
| 	} else { | ||||
| 		wm.reconnect <- struct{}{} | ||||
| 	} | ||||
| @ -385,7 +389,12 @@ func (wm *BinanceWebSocketManager) Stop() { | ||||
| 	} | ||||
|  | ||||
| 	wm.isStopped = true | ||||
| 	close(wm.stopChannel) | ||||
| 	// 关闭 stopChannel(确保已经关闭,避免 panic) | ||||
| 	select { | ||||
| 	case <-wm.stopChannel: | ||||
| 	default: | ||||
| 		close(wm.stopChannel) | ||||
| 	} | ||||
|  | ||||
| 	if wm.cancelFunc != nil { | ||||
| 		wm.cancelFunc() | ||||
| @ -398,6 +407,9 @@ func (wm *BinanceWebSocketManager) Stop() { | ||||
| 			log.Info(fmt.Sprintf("key【%s】close", wm.apiKey)) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// **重新创建 stopChannel,避免 Restart() 时无效** | ||||
| 	wm.stopChannel = make(chan struct{}) | ||||
| } | ||||
|  | ||||
| // 重连机制 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user