From be11b4cd1210e4d898a1a381a56c59bbcdeee6c5 Mon Sep 17 00:00:00 2001 From: aarsham Date: Wed, 21 Feb 2024 20:41:12 +0330 Subject: [PATCH] fix(graphql): resolve duplicate events on socket reconnect Resolved an issue in WebSocketClient where multiple listeners were added to `waitForConnectedState` when socket reconnects after subscription been requtesed with disconnected socket, causing duplicate events to be received by subscriptions. --- .../graphql/lib/src/links/websocket_link/websocket_client.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/graphql/lib/src/links/websocket_link/websocket_client.dart b/packages/graphql/lib/src/links/websocket_link/websocket_client.dart index 44341533..9f6ff470 100644 --- a/packages/graphql/lib/src/links/websocket_link/websocket_client.dart +++ b/packages/graphql/lib/src/links/websocket_link/websocket_client.dart @@ -502,6 +502,7 @@ class SocketClient { ) : waitForConnectedStateWithoutTimeout; + sub?.cancel(); sub = waitForConnectedState.listen((_) { final Stream dataErrorComplete = _messages.where( (GraphQLSocketMessage message) {