Skip to content

Commit f8373c1

Browse files
authored
Retry jitter (#1036)
1 parent dd3bc71 commit f8373c1

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

.changes/reconnect-jitter

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
patch type="fixed" "Add jitter to reconnect retry delays"

lib/src/core/engine.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
// ignore_for_file: deprecated_member_use_from_same_package
1616

1717
import 'dart:async';
18+
import 'dart:math' as math;
1819
import 'dart:typed_data' show Uint8List;
1920

2021
import 'package:flutter/foundation.dart' show kDebugMode, kIsWeb;
@@ -1013,7 +1014,11 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
10131014
return;
10141015
}
10151016

1016-
final delay = defaultRetryDelaysInMs[reconnectAttempts!];
1017+
var delay = defaultRetryDelaysInMs[reconnectAttempts!];
1018+
// Add random jitter to prevent thundering herd on reconnect
1019+
if (reconnectAttempts! > 1) {
1020+
delay += math.Random().nextInt(1000);
1021+
}
10171022

10181023
events.emit(EngineAttemptReconnectEvent(
10191024
attempt: reconnectAttempts! + 1,

0 commit comments

Comments
 (0)