react-realtime-hooks 1.3.2 → 1.3.4
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/index.cjs +96 -70
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +96 -70
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1220,47 +1220,62 @@ var useWebSocket = (options) => {
|
|
|
1220
1220
|
if (socketRef.current !== null) {
|
|
1221
1221
|
return;
|
|
1222
1222
|
}
|
|
1223
|
-
const socket2 = new WebSocket(resolvedUrl, protocols);
|
|
1224
|
-
const socketEpoch = nextSocketEpochRef.current + 1;
|
|
1225
|
-
socketRef.current = socket2;
|
|
1226
|
-
socketKeyRef.current = nextSocketKey;
|
|
1227
|
-
activeSocketEpochRef.current = socketEpoch;
|
|
1228
|
-
closingSocketEpochRef.current = null;
|
|
1229
|
-
nextSocketEpochRef.current = socketEpoch;
|
|
1230
|
-
socket2.binaryType = options.binaryType ?? "blob";
|
|
1231
1223
|
commitState((current) => ({
|
|
1232
1224
|
...current,
|
|
1233
|
-
bufferedAmount:
|
|
1225
|
+
bufferedAmount: 0,
|
|
1234
1226
|
lastChangedAt: Date.now(),
|
|
1235
1227
|
status: reconnect.status === "running" || reconnect.status === "scheduled" ? "reconnecting" : "connecting"
|
|
1236
1228
|
}));
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
handleOpen(event, socket2);
|
|
1242
|
-
};
|
|
1243
|
-
const handleSocketMessage = (event) => {
|
|
1244
|
-
if (!isActiveSocketEvent(socketEpoch)) {
|
|
1229
|
+
let cancelled = false;
|
|
1230
|
+
let detachListeners = null;
|
|
1231
|
+
queueMicrotask(() => {
|
|
1232
|
+
if (cancelled) {
|
|
1245
1233
|
return;
|
|
1246
1234
|
}
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1235
|
+
const socket2 = new WebSocket(resolvedUrl, protocols);
|
|
1236
|
+
const socketEpoch = nextSocketEpochRef.current + 1;
|
|
1237
|
+
socketRef.current = socket2;
|
|
1238
|
+
socketKeyRef.current = nextSocketKey;
|
|
1239
|
+
activeSocketEpochRef.current = socketEpoch;
|
|
1240
|
+
closingSocketEpochRef.current = null;
|
|
1241
|
+
nextSocketEpochRef.current = socketEpoch;
|
|
1242
|
+
socket2.binaryType = options.binaryType ?? "blob";
|
|
1243
|
+
commitState((current) => ({
|
|
1244
|
+
...current,
|
|
1245
|
+
bufferedAmount: socket2.bufferedAmount
|
|
1246
|
+
}));
|
|
1247
|
+
const handleSocketOpen = (event) => {
|
|
1248
|
+
if (!isActiveSocketEvent(socketEpoch)) {
|
|
1249
|
+
return;
|
|
1250
|
+
}
|
|
1251
|
+
handleOpen(event, socket2);
|
|
1252
|
+
};
|
|
1253
|
+
const handleSocketMessage = (event) => {
|
|
1254
|
+
if (!isActiveSocketEvent(socketEpoch)) {
|
|
1255
|
+
return;
|
|
1256
|
+
}
|
|
1257
|
+
handleMessage(event);
|
|
1258
|
+
};
|
|
1259
|
+
const handleSocketError = (event) => {
|
|
1260
|
+
handleError(event, socketEpoch);
|
|
1261
|
+
};
|
|
1262
|
+
const handleSocketClose = (event) => {
|
|
1263
|
+
handleClose(event, socketEpoch);
|
|
1264
|
+
};
|
|
1265
|
+
socket2.addEventListener("open", handleSocketOpen);
|
|
1266
|
+
socket2.addEventListener("message", handleSocketMessage);
|
|
1267
|
+
socket2.addEventListener("error", handleSocketError);
|
|
1268
|
+
socket2.addEventListener("close", handleSocketClose);
|
|
1269
|
+
detachListeners = () => {
|
|
1270
|
+
socket2.removeEventListener("open", handleSocketOpen);
|
|
1271
|
+
socket2.removeEventListener("message", handleSocketMessage);
|
|
1272
|
+
socket2.removeEventListener("error", handleSocketError);
|
|
1273
|
+
socket2.removeEventListener("close", handleSocketClose);
|
|
1274
|
+
};
|
|
1275
|
+
});
|
|
1259
1276
|
return () => {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
socket2.removeEventListener("error", handleSocketError);
|
|
1263
|
-
socket2.removeEventListener("close", handleSocketClose);
|
|
1277
|
+
cancelled = true;
|
|
1278
|
+
detachListeners?.();
|
|
1264
1279
|
};
|
|
1265
1280
|
}, [
|
|
1266
1281
|
closeSocket,
|
|
@@ -1571,55 +1586,66 @@ var useEventSource = (options) => {
|
|
|
1571
1586
|
if (eventSourceRef.current !== null) {
|
|
1572
1587
|
return;
|
|
1573
1588
|
}
|
|
1574
|
-
const source = new EventSource(resolvedUrl, {
|
|
1575
|
-
withCredentials: options.withCredentials ?? false
|
|
1576
|
-
});
|
|
1577
|
-
const sourceEpoch = nextEventSourceEpochRef.current + 1;
|
|
1578
|
-
eventSourceRef.current = source;
|
|
1579
|
-
eventSourceKeyRef.current = nextEventSourceKey;
|
|
1580
|
-
activeEventSourceEpochRef.current = sourceEpoch;
|
|
1581
|
-
nextEventSourceEpochRef.current = sourceEpoch;
|
|
1582
1589
|
commitState((current) => ({
|
|
1583
1590
|
...current,
|
|
1584
1591
|
lastChangedAt: Date.now(),
|
|
1585
1592
|
status: reconnect.status === "running" || reconnect.status === "scheduled" ? "reconnecting" : "connecting"
|
|
1586
1593
|
}));
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
handleOpen(event, source);
|
|
1592
|
-
};
|
|
1593
|
-
const handleSourceMessage = (event) => {
|
|
1594
|
-
if (!isActiveEventSourceEvent(sourceEpoch)) {
|
|
1594
|
+
let cancelled = false;
|
|
1595
|
+
let detachListeners = null;
|
|
1596
|
+
queueMicrotask(() => {
|
|
1597
|
+
if (cancelled) {
|
|
1595
1598
|
return;
|
|
1596
1599
|
}
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
const handler = (event) => {
|
|
1600
|
+
const source = new EventSource(resolvedUrl, {
|
|
1601
|
+
withCredentials: options.withCredentials ?? false
|
|
1602
|
+
});
|
|
1603
|
+
const sourceEpoch = nextEventSourceEpochRef.current + 1;
|
|
1604
|
+
eventSourceRef.current = source;
|
|
1605
|
+
eventSourceKeyRef.current = nextEventSourceKey;
|
|
1606
|
+
activeEventSourceEpochRef.current = sourceEpoch;
|
|
1607
|
+
nextEventSourceEpochRef.current = sourceEpoch;
|
|
1608
|
+
const handleSourceOpen = (event) => {
|
|
1607
1609
|
if (!isActiveEventSourceEvent(sourceEpoch)) {
|
|
1608
1610
|
return;
|
|
1609
1611
|
}
|
|
1610
|
-
|
|
1612
|
+
handleOpen(event, source);
|
|
1611
1613
|
};
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1614
|
+
const handleSourceMessage = (event) => {
|
|
1615
|
+
if (!isActiveEventSourceEvent(sourceEpoch)) {
|
|
1616
|
+
return;
|
|
1617
|
+
}
|
|
1618
|
+
commitParsedMessage("message", event, false);
|
|
1619
|
+
};
|
|
1620
|
+
const namedEventHandlers = /* @__PURE__ */ new Map();
|
|
1621
|
+
const handleSourceError = (event) => {
|
|
1622
|
+
handleError(event, source, sourceEpoch);
|
|
1623
|
+
};
|
|
1624
|
+
source.addEventListener("open", handleSourceOpen);
|
|
1625
|
+
source.addEventListener("message", handleSourceMessage);
|
|
1626
|
+
for (const eventName of namedEvents) {
|
|
1627
|
+
const handler = (event) => {
|
|
1628
|
+
if (!isActiveEventSourceEvent(sourceEpoch)) {
|
|
1629
|
+
return;
|
|
1630
|
+
}
|
|
1631
|
+
commitParsedMessage(eventName, event, true);
|
|
1632
|
+
};
|
|
1633
|
+
namedEventHandlers.set(eventName, handler);
|
|
1634
|
+
source.addEventListener(eventName, handler);
|
|
1621
1635
|
}
|
|
1622
|
-
source.
|
|
1636
|
+
source.addEventListener("error", handleSourceError);
|
|
1637
|
+
detachListeners = () => {
|
|
1638
|
+
source.removeEventListener("open", handleSourceOpen);
|
|
1639
|
+
source.removeEventListener("message", handleSourceMessage);
|
|
1640
|
+
for (const [eventName, handler] of namedEventHandlers) {
|
|
1641
|
+
source.removeEventListener(eventName, handler);
|
|
1642
|
+
}
|
|
1643
|
+
source.removeEventListener("error", handleSourceError);
|
|
1644
|
+
};
|
|
1645
|
+
});
|
|
1646
|
+
return () => {
|
|
1647
|
+
cancelled = true;
|
|
1648
|
+
detachListeners?.();
|
|
1623
1649
|
};
|
|
1624
1650
|
}, [
|
|
1625
1651
|
closeEventSource,
|