Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/realtime_client/lib/src/constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:realtime_client/src/version.dart';
class Constants {
static const String vsn = '1.0.0';
static const Duration defaultTimeout = Duration(milliseconds: 10000);
static const Duration defaultHeartbeatInterval = Duration(seconds: 25);
static const int wsCloseNormal = 1000;
static const Map<String, String> defaultHeaders = {
'X-Client-Info': 'realtime-dart/$version',
Expand Down
8 changes: 4 additions & 4 deletions packages/realtime_client/lib/src/realtime_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class RealtimeClient {
final WebSocketTransport transport;
final Client? httpClient;
final _log = Logger('supabase.realtime');
int heartbeatIntervalMs = 30000;
final Duration heartbeatInterval;
Timer? heartbeatTimer;

/// reference ID of the most recently sent heartbeat.
Expand Down Expand Up @@ -122,7 +122,7 @@ class RealtimeClient {
String endPoint, {
WebSocketTransport? transport,
this.timeout = Constants.defaultTimeout,
this.heartbeatIntervalMs = 30000,
this.heartbeatInterval = Constants.defaultHeartbeatInterval,
this.logger,
RealtimeEncode? encode,
RealtimeDecode? decode,
Expand All @@ -145,7 +145,7 @@ class RealtimeClient {
},
transport = transport ?? createWebSocketClient {
_log.config(
'Initialize RealtimeClient with endpoint: $endPoint, timeout: $timeout, heartbeatIntervalMs: $heartbeatIntervalMs, longpollerTimeout: $longpollerTimeout, logLevel: $logLevel');
'Initialize RealtimeClient with endpoint: $endPoint, timeout: $timeout, heartbeatInterval: $heartbeatInterval, longpollerTimeout: $longpollerTimeout, logLevel: $logLevel');
_log.finest('Initialize with headers: $headers, params: $params');
final customJWT = this.headers['Authorization']?.split(' ').last;
accessToken = customJWT ?? params['apikey'];
Expand Down Expand Up @@ -467,7 +467,7 @@ class RealtimeClient {
reconnectTimer.reset();
if (heartbeatTimer != null) heartbeatTimer!.cancel();
heartbeatTimer = Timer.periodic(
Duration(milliseconds: heartbeatIntervalMs),
heartbeatInterval,
(Timer t) async => await sendHeartbeat(),
);
for (final callback in stateChangeCallbacks['open']!) {
Expand Down
6 changes: 3 additions & 3 deletions packages/realtime_client/test/socket_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ void main() {
});
expect(socket.timeout, const Duration(milliseconds: 10000));
expect(socket.longpollerTimeout, 20000);
expect(socket.heartbeatIntervalMs, 30000);
expect(socket.heartbeatInterval, Constants.defaultHeartbeatInterval);
expect(
socket.logger is void Function(
String? kind,
Expand All @@ -100,7 +100,7 @@ void main() {
'wss://example.com/socket',
timeout: const Duration(milliseconds: 40000),
longpollerTimeout: 50000,
heartbeatIntervalMs: 60000,
heartbeatInterval: const Duration(seconds: 60),
// ignore: avoid_print
logger: (kind, msg, data) => print('[$kind] $msg $data'),
headers: {'X-Client-Info': 'supabase-dart/0.0.0'},
Expand All @@ -117,7 +117,7 @@ void main() {
});
expect(socket.timeout, const Duration(milliseconds: 40000));
expect(socket.longpollerTimeout, 50000);
expect(socket.heartbeatIntervalMs, 60000);
expect(socket.heartbeatInterval, const Duration(seconds: 60));
expect(
socket.logger is void Function(
String? kind,
Expand Down
Loading