@muhkoo/connect 0.3.0-alpha.0 → 0.6.0-alpha.1
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/README.md +107 -10
- package/dist/browser/index.js +530 -8
- package/dist/browser/index.js.map +1 -1
- package/dist/connect.d.ts +587 -3
- package/dist/server/index.js +530 -8
- package/dist/server/index.js.map +1 -1
- package/dist/workers/index.js +20 -1
- package/dist/workers/index.js.map +1 -1
- package/package.json +2 -2
package/dist/workers/index.js
CHANGED
|
@@ -1913,6 +1913,7 @@ class WSTransport extends EventCore {
|
|
|
1913
1913
|
return `${this.id}:${event}`;
|
|
1914
1914
|
}
|
|
1915
1915
|
url;
|
|
1916
|
+
urlProvider;
|
|
1916
1917
|
socket = null;
|
|
1917
1918
|
_isConnected = false;
|
|
1918
1919
|
_isConnecting = false;
|
|
@@ -1938,6 +1939,7 @@ class WSTransport extends EventCore {
|
|
|
1938
1939
|
throw new Error("WSTransport: `url` is required");
|
|
1939
1940
|
}
|
|
1940
1941
|
this.url = opts.url;
|
|
1942
|
+
this.urlProvider = opts.urlProvider;
|
|
1941
1943
|
this.id = opts.id ?? `ws${++__wsInstanceSeq}`;
|
|
1942
1944
|
this.autoReconnect = opts.autoReconnect ?? true;
|
|
1943
1945
|
this.reconnectDelay = opts.reconnectDelay ?? 3000;
|
|
@@ -1954,6 +1956,18 @@ class WSTransport extends EventCore {
|
|
|
1954
1956
|
throw new Error("WSTransport: already connected or connecting");
|
|
1955
1957
|
}
|
|
1956
1958
|
this._isConnecting = true;
|
|
1959
|
+
// On a RECONNECT, refresh the URL (the baked-in single-use ticket is spent).
|
|
1960
|
+
// The first connect uses `url` as-is. If the provider throws (e.g. can't
|
|
1961
|
+
// mint a ticket), surface it and let scheduleReconnect retry.
|
|
1962
|
+
if (this.urlProvider && this.reconnectAttempts > 0) {
|
|
1963
|
+
try {
|
|
1964
|
+
this.url = await this.urlProvider();
|
|
1965
|
+
}
|
|
1966
|
+
catch (err) {
|
|
1967
|
+
this._isConnecting = false;
|
|
1968
|
+
throw err;
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1957
1971
|
return new Promise((resolve, reject) => {
|
|
1958
1972
|
try {
|
|
1959
1973
|
const socket = new WebSocket(this.url);
|
|
@@ -2126,7 +2140,12 @@ class WSTransport extends EventCore {
|
|
|
2126
2140
|
await this.connect();
|
|
2127
2141
|
}
|
|
2128
2142
|
catch {
|
|
2129
|
-
//
|
|
2143
|
+
// A failed reconnect never opened the socket, so its `onclose` won't
|
|
2144
|
+
// re-schedule (that path is guarded by `wasConnected`). Re-schedule here
|
|
2145
|
+
// so we keep retrying (with a fresh ticket each time) until we succeed
|
|
2146
|
+
// or hit the attempt cap.
|
|
2147
|
+
if (this.autoReconnect)
|
|
2148
|
+
this.scheduleReconnect();
|
|
2130
2149
|
}
|
|
2131
2150
|
}, this.reconnectDelay);
|
|
2132
2151
|
}
|