@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.
- package/dist/repo/ShareSync.d.ts +4 -0
- package/dist/repo/ShareSync.js +27 -10
- package/package.json +1 -1
package/dist/repo/ShareSync.d.ts
CHANGED
|
@@ -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?;
|
package/dist/repo/ShareSync.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
107
|
+
};
|
|
108
|
+
shareSync._onSocketMessage = (event) => {
|
|
108
109
|
updateSocketIsOpen();
|
|
109
110
|
shareSync._listener.onSocketEvent('message', event);
|
|
110
|
-
}
|
|
111
|
-
shareSync.
|
|
111
|
+
};
|
|
112
|
+
shareSync._onSocketClose = (event) => {
|
|
112
113
|
updateSocketIsOpen();
|
|
113
114
|
shareSync._listener.onSocketEvent('close', event);
|
|
114
|
-
}
|
|
115
|
-
shareSync.
|
|
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
|
-
//
|
|
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
|
}
|