This commit is contained in:
pradeepkumar
2026-03-27 15:55:05 +05:30
parent 625db4bb99
commit 40410c9972

View File

@@ -20,7 +20,6 @@ class SocketService {
io.Socket? _socket;
bool _isConnected = false;
bool _intentionalDisconnect = false;
bool _isReconnecting = false;
int _reconnectAttempts = 0;
static const _maxReconnectAttempts = 3;
String? _currentToken;
@@ -84,9 +83,11 @@ class SocketService {
_socket!.onConnect((_) {
_log.i('Socket connected: ${_socket!.id}');
_isConnected = true;
_reconnectAttempts = 0; // Reset on successful connect
_isReconnecting = false;
_connectionController.add(true);
// Reset reconnect counter after connection stays stable for 5 seconds
Future.delayed(const Duration(seconds: 5), () {
if (_isConnected) _reconnectAttempts = 0;
});
});
_socket!.onDisconnect((reason) {
@@ -94,13 +95,14 @@ class SocketService {
_isConnected = false;
_connectionController.add(false);
if (reason == 'io server disconnect' && !_intentionalDisconnect && !_isReconnecting) {
if (reason == 'io server disconnect' && !_intentionalDisconnect) {
if (_reconnectAttempts < _maxReconnectAttempts) {
_reconnectAttempts++;
_log.w('Server rejected connection (attempt $_reconnectAttempts/$_maxReconnectAttempts) - refreshing token...');
_reconnectWithFreshToken();
} else {
_log.e('Max reconnect attempts reached - giving up');
_log.e('Max reconnect attempts reached - giving up. Check backend logs for rejection reason.');
_reconnectAttempts = 0; // Reset for future manual reconnects
}
}
});
@@ -180,7 +182,6 @@ class SocketService {
}
Future<void> _reconnectWithFreshToken() async {
_isReconnecting = true;
// Wait with exponential backoff
final delay = Duration(seconds: _reconnectAttempts * 2);
_log.i('Waiting ${delay.inSeconds}s before reconnect attempt...');
@@ -236,7 +237,6 @@ class SocketService {
void disconnect() {
_intentionalDisconnect = true;
_isReconnecting = false;
_reconnectAttempts = 0;
_socket?.disconnect();
_socket?.dispose();