@@ -10,7 +10,7 @@ final class WebSocketMetrics {
10
10
const WebSocketMetrics ({
11
11
required this .timestamp,
12
12
required this .readyState,
13
- required this .reconnectTimeout ,
13
+ required this .nextReconnectionAttempt ,
14
14
required this .transferredSize,
15
15
required this .receivedSize,
16
16
required this .transferredCount,
@@ -19,8 +19,9 @@ final class WebSocketMetrics {
19
19
required this .lastSuccessfulConnectionTime,
20
20
required this .disconnects,
21
21
required this .lastDisconnectTime,
22
- required this .expectedReconnectTime,
23
22
required this .lastDisconnect,
23
+ required this .isReconnectionActive,
24
+ required this .currentReconnectAttempts,
24
25
required this .lastUrl,
25
26
});
26
27
@@ -51,11 +52,6 @@ final class WebSocketMetrics {
51
52
WebSocketReadyState .fromCode,
52
53
() => WebSocketReadyState .closed,
53
54
),
54
- reconnectTimeout: extract <int , Duration >(
55
- 'reconnectTimeout' ,
56
- (v) => Duration (milliseconds: v),
57
- () => Duration .zero,
58
- ),
59
55
transferredSize: extract <String , BigInt >(
60
56
'transferredSize' ,
61
57
BigInt .parse,
@@ -120,8 +116,18 @@ final class WebSocketMetrics {
120
116
(v) => v,
121
117
() => null ,
122
118
),
123
- expectedReconnectTime: extract <int , DateTime ?>(
124
- 'expectedReconnectTime' ,
119
+ isReconnectionActive: extract <bool , bool >(
120
+ 'isReconnectionActive' ,
121
+ (v) => v,
122
+ () => false ,
123
+ ),
124
+ currentReconnectAttempts: extract <int , int >(
125
+ 'currentReconnectAttempts' ,
126
+ (v) => v,
127
+ () => 0 ,
128
+ ),
129
+ nextReconnectionAttempt: extract <int , DateTime ?>(
130
+ 'nextReconnectionAttempt' ,
125
131
DateTime .fromMillisecondsSinceEpoch,
126
132
() => null ,
127
133
),
@@ -132,7 +138,6 @@ final class WebSocketMetrics {
132
138
Map <String , Object ?> toJson () => < String , Object ? > {
133
139
'timestamp' : timestamp.millisecondsSinceEpoch,
134
140
'readyState' : readyState.code,
135
- 'reconnectTimeout' : reconnectTimeout.inMilliseconds,
136
141
'transferredSize' : transferredSize.toString (),
137
142
'receivedSize' : receivedSize.toString (),
138
143
'transferredCount' : transferredCount.toString (),
@@ -143,9 +148,12 @@ final class WebSocketMetrics {
143
148
lastSuccessfulConnectionTime? .millisecondsSinceEpoch,
144
149
'disconnects' : disconnects,
145
150
'lastDisconnectTime' : lastDisconnectTime? .millisecondsSinceEpoch,
146
- 'expectedReconnectTime' : expectedReconnectTime? .millisecondsSinceEpoch,
151
+ 'nextReconnectionAttempt' :
152
+ nextReconnectionAttempt? .millisecondsSinceEpoch,
147
153
'lastDisconnectCode' : lastDisconnect.code,
148
154
'lastDisconnectReason' : lastDisconnect.reason,
155
+ 'isReconnectionActive' : isReconnectionActive,
156
+ 'currentReconnectAttempts' : currentReconnectAttempts,
149
157
'lastUrl' : lastUrl,
150
158
};
151
159
@@ -155,9 +163,6 @@ final class WebSocketMetrics {
155
163
/// The current state of the connection.
156
164
final WebSocketReadyState readyState;
157
165
158
- /// Timeout between reconnection attempts.
159
- final Duration reconnectTimeout;
160
-
161
166
/// The total number of bytes sent.
162
167
final BigInt transferredSize;
163
168
@@ -183,18 +188,23 @@ final class WebSocketMetrics {
183
188
final DateTime ? lastDisconnectTime;
184
189
185
190
/// The time of the next expected reconnect.
186
- final DateTime ? expectedReconnectTime ;
191
+ final DateTime ? nextReconnectionAttempt ;
187
192
188
193
/// The last disconnect reason.
189
194
final ({int ? code, String ? reason}) lastDisconnect;
190
195
196
+ /// Is the client currently planning to reconnect?
197
+ final bool isReconnectionActive;
198
+
199
+ /// The current number of reconnection attempts.
200
+ final int currentReconnectAttempts;
201
+
191
202
/// The last URL used to connect.
192
203
final String ? lastUrl;
193
204
194
205
@override
195
206
int get hashCode => Object .hashAll ([
196
207
readyState,
197
- reconnectTimeout,
198
208
transferredSize,
199
209
receivedSize,
200
210
transferredCount,
@@ -203,8 +213,10 @@ final class WebSocketMetrics {
203
213
lastSuccessfulConnectionTime,
204
214
disconnects,
205
215
lastDisconnectTime,
206
- expectedReconnectTime ,
216
+ nextReconnectionAttempt ,
207
217
lastDisconnect,
218
+ isReconnectionActive,
219
+ currentReconnectAttempts,
208
220
lastUrl,
209
221
]);
210
222
@@ -219,19 +231,20 @@ final class WebSocketMetrics {
219
231
'${ago ? 'ago' : 'from now' }'
220
232
: 'never' ;
221
233
return '- readyState: ${readyState .name }\n '
222
- '- reconnectTimeout: ${reconnectTimeout .inSeconds } seconds\n '
223
234
'- transferredSize: $transferredSize \n '
224
235
'- receivedSize: $receivedSize \n '
225
236
'- transferredCount: $transferredCount \n '
226
237
'- receivedCount: $receivedCount \n '
238
+ '- isReconnectionActive: $isReconnectionActive \n '
239
+ '- currentReconnectAttempts: $currentReconnectAttempts \n '
227
240
'- reconnects: ${reconnects .successful } / ${reconnects .total }\n '
228
241
'- lastSuccessfulConnectionTime: '
229
242
'${dateTimeRepresentation (lastSuccessfulConnectionTime , ago : true )}\n '
230
243
'- disconnects: $disconnects \n '
231
244
'- lastDisconnectTime: '
232
245
'${dateTimeRepresentation (lastDisconnectTime , ago : true )}\n '
233
- '- expectedReconnectTime : '
234
- '${dateTimeRepresentation (expectedReconnectTime )}\n '
246
+ '- nextReconnectionAttempt : '
247
+ '${dateTimeRepresentation (nextReconnectionAttempt )}\n '
235
248
'- lastDisconnect: '
236
249
'${lastDisconnect .code ?? 'unknown' } '
237
250
'(${lastDisconnect .reason ?? 'unknown' })\n '
0 commit comments