@shaxpir/duiduidui-models 1.6.16 → 1.6.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,6 +44,10 @@ export declare class ShareSync {
44
44
  private _socket;
45
45
  private _connection;
46
46
  private _listener;
47
+ private _onSocketOpen;
48
+ private _onSocketMessage;
49
+ private _onSocketClose;
50
+ private _onSocketError;
47
51
  private _storage;
48
52
  private _durableStore;
49
53
  private _storageFactory?;
@@ -96,26 +96,31 @@ class ShareSync {
96
96
  shareSync._socket = new reconnecting_websocket_1.default(options.urlProvider);
97
97
  }
98
98
  function updateSocketIsOpen() {
99
- shareSync._socketIsOpen = shareSync._socket.readyState === reconnecting_websocket_1.default.OPEN;
99
+ shareSync._socketIsOpen = shareSync._socket ? shareSync._socket.readyState === reconnecting_websocket_1.default.OPEN : false;
100
100
  }
101
101
  // The listener should forward all events: open, message, close, error
102
102
  shareSync._listener = options.connectionListener;
103
- shareSync._socket.addEventListener('open', (event) => {
103
+ // Store event handlers as instance variables so we can remove them during shutdown
104
+ shareSync._onSocketOpen = (event) => {
104
105
  updateSocketIsOpen();
105
106
  shareSync._listener.onSocketEvent('open', event);
106
- });
107
- shareSync._socket.addEventListener('message', (event) => {
107
+ };
108
+ shareSync._onSocketMessage = (event) => {
108
109
  updateSocketIsOpen();
109
110
  shareSync._listener.onSocketEvent('message', event);
110
- });
111
- shareSync._socket.addEventListener('close', (event) => {
111
+ };
112
+ shareSync._onSocketClose = (event) => {
112
113
  updateSocketIsOpen();
113
114
  shareSync._listener.onSocketEvent('close', event);
114
- });
115
- shareSync._socket.addEventListener('error', (event) => {
115
+ };
116
+ shareSync._onSocketError = (event) => {
116
117
  updateSocketIsOpen();
117
118
  shareSync._listener.onSocketEvent('error', event);
118
- });
119
+ };
120
+ shareSync._socket.addEventListener('open', shareSync._onSocketOpen);
121
+ shareSync._socket.addEventListener('message', shareSync._onSocketMessage);
122
+ shareSync._socket.addEventListener('close', shareSync._onSocketClose);
123
+ shareSync._socket.addEventListener('error', shareSync._onSocketError);
119
124
  // Initialize DurableStore first if enabled, then create connection with it
120
125
  if (shareSync._hasDurableStore) {
121
126
  shareSync.initializeDurableStore(options).then(() => {
@@ -472,8 +477,20 @@ class ShareSync {
472
477
  }
473
478
  shutdown() {
474
479
  console.log('[ShareSync] Shutting down...');
475
- // Close the WebSocket connection
480
+ // Remove event listeners before closing the socket to prevent handlers from firing during shutdown
476
481
  if (this._socket) {
482
+ if (this._onSocketOpen) {
483
+ this._socket.removeEventListener('open', this._onSocketOpen);
484
+ }
485
+ if (this._onSocketMessage) {
486
+ this._socket.removeEventListener('message', this._onSocketMessage);
487
+ }
488
+ if (this._onSocketClose) {
489
+ this._socket.removeEventListener('close', this._onSocketClose);
490
+ }
491
+ if (this._onSocketError) {
492
+ this._socket.removeEventListener('error', this._onSocketError);
493
+ }
477
494
  this._socket.close();
478
495
  this._socket = null;
479
496
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shaxpir/duiduidui-models",
3
- "version": "1.6.16",
3
+ "version": "1.6.17",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/shaxpir/duiduidui-models"