Skip to content

Commit 5892858

Browse files
committed
Fixing PhoenixSocket's close/dispose
1 parent 64bce8b commit 5892858

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

lib/src/socket.dart

+10-1
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,13 @@ class PhoenixSocket {
249249
_topicMessages.close();
250250
_topicStreams.clear();
251251

252+
_connectionManager?.dispose(normalClosure);
253+
_connectionManager = null;
254+
252255
_socketStateStream.close();
253256
_stateEventStreamController.close();
254257
_receiveStreamController.close();
258+
255259
_logger.info('Disposed of PhoenixSocket');
256260
}
257261

@@ -275,6 +279,7 @@ class PhoenixSocket {
275279
Future<void> _closeConnection(int code, {String? reason}) async {
276280
if (_disposed) {
277281
_logger.warning('Cannot close a disposed socket');
282+
return;
278283
}
279284
if (_connectionManager != null) {
280285
_connectionManager!.dispose(code, reason);
@@ -582,6 +587,10 @@ class PhoenixSocket {
582587
() =>
583588
'Socket closed with code ${closeEvent.code} and reason "${closeEvent.reason}"',
584589
);
585-
_triggerChannelExceptions(exception);
590+
591+
if (_connectionManager != null) {
592+
// Otherwise we have closed the connections ourselves.
593+
_triggerChannelExceptions(exception);
594+
}
586595
}
587596
}

0 commit comments

Comments
 (0)