🐛 Patch websocket connection issue

This commit is contained in:
LittleSheep 2025-02-03 21:34:05 +08:00
parent ae9a7eb0fd
commit c6ce3fe2b7

View File

@ -33,7 +33,16 @@ class WebSocketProvider extends ChangeNotifier {
await connect(); await connect();
} }
Completer<void>? _connectCompleter;
Future<void> connect({noRetry = false}) async { Future<void> connect({noRetry = false}) async {
if(_connectCompleter != null) {
await _connectCompleter!.future;
_connectCompleter = null;
}
_connectCompleter = Completer<void>();
if (!_ua.isAuthorized) return; if (!_ua.isAuthorized) return;
if (isConnected || conn != null) { if (isConnected || conn != null) {
disconnect(); disconnect();
@ -64,12 +73,13 @@ class WebSocketProvider extends ChangeNotifier {
log('Retry connecting to websocket in 3 seconds...'); log('Retry connecting to websocket in 3 seconds...');
return Future.delayed( return Future.delayed(
const Duration(seconds: 3), const Duration(seconds: 3),
() => connect(noRetry: true), () => connect(noRetry: true),
); );
} }
} finally { } finally {
isBusy = false; isBusy = false;
notifyListeners(); notifyListeners();
_connectCompleter!.complete();
} }
} }