wse-client 2.3.1 → 2.4.0
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 +15 -10
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/examples/ChatHandlers.d.ts.map +1 -1
- package/dist/examples/ChatHandlers.js.map +1 -1
- package/dist/examples/IoTHandlers.d.ts.map +1 -1
- package/dist/examples/IoTHandlers.js.map +1 -1
- package/dist/handlers/EventHandlers.d.ts.map +1 -1
- package/dist/handlers/EventHandlers.js.map +1 -1
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/hooks/useWSE.d.ts +6 -0
- package/dist/hooks/useWSE.d.ts.map +1 -1
- package/dist/hooks/useWSE.js +64 -30
- package/dist/hooks/useWSE.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/protocols/compression.d.ts.map +1 -1
- package/dist/protocols/compression.js.map +1 -1
- package/dist/protocols/transformer.d.ts.map +1 -1
- package/dist/protocols/transformer.js.map +1 -1
- package/dist/services/AdaptiveQualityManager.d.ts.map +1 -1
- package/dist/services/AdaptiveQualityManager.js.map +1 -1
- package/dist/services/ConnectionManager.d.ts +7 -0
- package/dist/services/ConnectionManager.d.ts.map +1 -1
- package/dist/services/ConnectionManager.js +56 -20
- package/dist/services/ConnectionManager.js.map +1 -1
- package/dist/services/ConnectionPool.d.ts +0 -1
- package/dist/services/ConnectionPool.d.ts.map +1 -1
- package/dist/services/ConnectionPool.js +0 -2
- package/dist/services/ConnectionPool.js.map +1 -1
- package/dist/services/EventSequencer.d.ts +18 -9
- package/dist/services/EventSequencer.d.ts.map +1 -1
- package/dist/services/EventSequencer.js +38 -57
- package/dist/services/EventSequencer.js.map +1 -1
- package/dist/services/MessageProcessor.d.ts +3 -0
- package/dist/services/MessageProcessor.d.ts.map +1 -1
- package/dist/services/MessageProcessor.js +57 -15
- package/dist/services/MessageProcessor.js.map +1 -1
- package/dist/services/NetworkMonitor.d.ts +0 -7
- package/dist/services/NetworkMonitor.d.ts.map +1 -1
- package/dist/services/NetworkMonitor.js +33 -40
- package/dist/services/NetworkMonitor.js.map +1 -1
- package/dist/services/OfflineQueue.d.ts.map +1 -1
- package/dist/services/OfflineQueue.js.map +1 -1
- package/dist/services/RateLimiter.d.ts.map +1 -1
- package/dist/services/RateLimiter.js.map +1 -1
- package/dist/stores/useMessageQueueStore.d.ts.map +1 -1
- package/dist/stores/useMessageQueueStore.js.map +1 -1
- package/dist/stores/useWSEStore.d.ts.map +1 -1
- package/dist/stores/useWSEStore.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/circuitBreaker.d.ts.map +1 -1
- package/dist/utils/circuitBreaker.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/security.d.ts +10 -2
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +38 -7
- package/dist/utils/security.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ High-performance WebSocket server built in Rust with native clustering, E2E encr
|
|
|
39
39
|
|---------|---------|
|
|
40
40
|
| **Key exchange** | ECDH P-256 (per-connection keypair, automatic during handshake) |
|
|
41
41
|
| **Encryption** | AES-GCM-256 with unique 12-byte IV per message |
|
|
42
|
-
| **Key derivation** | HKDF-SHA256 (salt: `wse-encryption
|
|
42
|
+
| **Key derivation** | HKDF-SHA256 (no salt, info: `wse-encryption/aes-gcm-key`) |
|
|
43
43
|
| **Wire format** | `E:` prefix + 12-byte IV + AES-GCM ciphertext + 16-byte auth tag |
|
|
44
44
|
| **Key rotation** | Configurable rotation interval (default 1 hour), automatic renegotiation |
|
|
45
45
|
| **Replay prevention** | Nonce cache (10K entries, 5-minute TTL) on the client side |
|
|
@@ -81,6 +81,7 @@ High-performance WebSocket server built in Rust with native clustering, E2E encr
|
|
|
81
81
|
| **Memory management** | Global budget (default 256 MB), TTL eviction, LRU eviction when over budget |
|
|
82
82
|
| **Zero-copy storage** | Recovery entries share `Bytes` (Arc) with the broadcast path |
|
|
83
83
|
| **Recovery on reconnect** | `subscribe_with_recovery()` replays missed messages automatically |
|
|
84
|
+
| **Per-message stamp** | When recovery is enabled, every topic broadcast carries `tp`/`e`/`o` (topic, epoch, offset) so clients dedup idempotently and detect gaps from the messages themselves |
|
|
84
85
|
|
|
85
86
|
### Client SDKs (Python + TypeScript/React)
|
|
86
87
|
|
|
@@ -91,8 +92,8 @@ High-performance WebSocket server built in Rust with native clustering, E2E encr
|
|
|
91
92
|
| **Circuit breaker** | CLOSED/OPEN/HALF_OPEN state machine, prevents connection storms |
|
|
92
93
|
| **Rate limiting** | Client-side token bucket, coordinates with server feedback |
|
|
93
94
|
| **E2E encryption** | Wire-compatible AES-GCM-256 + ECDH P-256 (both clients speak the same protocol) |
|
|
94
|
-
| **Event sequencing** | Duplicate detection (sliding window) +
|
|
95
|
-
| **Network monitor** | Real-time latency, jitter,
|
|
95
|
+
| **Event sequencing** | Duplicate detection (sliding window) + per-topic `(epoch, offset)` idempotent dedup with automatic gap recovery |
|
|
96
|
+
| **Network monitor** | Real-time latency, jitter, and connection-quality scoring (Python client also estimates packet loss) |
|
|
96
97
|
| **Priority queues** | 5 levels from CRITICAL to BACKGROUND |
|
|
97
98
|
| **Offline queue** | IndexedDB persistence (TypeScript), replayed on reconnect |
|
|
98
99
|
| **Compression** | Automatic zlib for messages above threshold |
|
|
@@ -105,8 +106,11 @@ High-performance WebSocket server built in Rust with native clustering, E2E encr
|
|
|
105
106
|
|---------|---------|
|
|
106
107
|
| **Origin validation** | Configure in reverse proxy (nginx/Caddy) to prevent CSWSH |
|
|
107
108
|
| **Cookie auth** | `access_token` HTTP-only cookie with `Secure + SameSite=Lax` (OWASP recommended for browsers) |
|
|
108
|
-
| **Frame protection** | 1 MB max frame size, serde_json parsing (no eval), escaped user IDs in server_ready |
|
|
109
|
+
| **Frame protection** | 1 MB max frame size, serde_json parsing (no eval), escaped user IDs in server_ready; inbound msgpack rejected beyond 64 nesting levels |
|
|
109
110
|
| **Cluster frame protection** | zstd decompression output capped at 1 MB (MAX_FRAME_SIZE), protocol version validation |
|
|
111
|
+
| **Slowloris protection** | At most 512 concurrent pre-handshake connections; sockets that never complete the WS upgrade are bounded and dropped |
|
|
112
|
+
| **Bounded callback dispatch** | Callback mode caps in-flight `on_message` callbacks at 256 per connection; excess inbound work is shed and counted as rate-limited |
|
|
113
|
+
| **Fail-closed recovery ACL** | Recovery replay applies the connection's topic ACL — unauthorized topics are never replayed or position-probed |
|
|
110
114
|
|
|
111
115
|
---
|
|
112
116
|
|
|
@@ -185,6 +189,7 @@ token = rust_jwt_encode(
|
|
|
185
189
|
| `presence_max_data_size` | 4096 | Max bytes for a user's presence metadata |
|
|
186
190
|
| `presence_max_members` | 0 | Max tracked members per topic (0 = unlimited) |
|
|
187
191
|
| `max_outbound_queue_bytes` | 16777216 | Per-connection outbound buffer limit (bytes, default 16 MB). Messages dropped when exceeded |
|
|
192
|
+
| `max_subscriptions_per_connection` | 0 | Max topics per connection (0 = unlimited). Prevents topic explosion DoS |
|
|
188
193
|
| `rate_limit_capacity` | 100000.0 | Token bucket capacity per connection |
|
|
189
194
|
| `rate_limit_refill` | 10000.0 | Token bucket refill rate per second |
|
|
190
195
|
| `max_message_size` | 1048576 | Maximum WebSocket frame size in bytes (default 1 MB) |
|
|
@@ -317,10 +322,10 @@ result = server.subscribe_with_recovery(
|
|
|
317
322
|
epoch=client_epoch, # From previous session
|
|
318
323
|
offset=client_offset, # From previous session
|
|
319
324
|
)
|
|
320
|
-
# {"topics": {"prices": {"epoch":
|
|
325
|
+
# {"topics": {"prices": {"epoch": "0000007b", "offset": 456, "recovered": True, "count": 12}}}
|
|
321
326
|
```
|
|
322
327
|
|
|
323
|
-
The server maintains per-topic ring buffers (power-of-2 capacity, bitmask indexing).
|
|
328
|
+
The server maintains per-topic ring buffers (power-of-2 capacity, bitmask indexing). When recovery is enabled, every topic broadcast is stamped with `tp`/`e`/`o` (topic, epoch, offset) fields, so clients track their per-topic position from the messages themselves, drop duplicates idempotently by `(epoch, offset)`, and automatically request recovery when they detect an offset gap. On reconnect, the server replays missed messages from the ring buffer. If the gap is too large or the epoch has changed, the client receives a `NotRecovered` status and should re-subscribe from scratch.
|
|
324
329
|
|
|
325
330
|
Memory is managed with a global budget (default 256 MB), TTL eviction for idle buffers, and LRU eviction when over budget.
|
|
326
331
|
|
|
@@ -501,7 +506,7 @@ def handle(event):
|
|
|
501
506
|
client.run_forever()
|
|
502
507
|
```
|
|
503
508
|
|
|
504
|
-
Key features: 4 reconnect strategies (exponential, linear, fibonacci, adaptive), connection pool with health scoring and 3 load balancing strategies, circuit breaker, token bucket rate limiter, event sequencer with dedup and
|
|
509
|
+
Key features: 4 reconnect strategies (exponential, linear, fibonacci, adaptive), connection pool with health scoring and 3 load balancing strategies, circuit breaker, token bucket rate limiter, event sequencer with id dedup plus per-topic `(epoch, offset)` idempotent dedup and gap recovery, network quality monitoring (latency/jitter/packet loss).
|
|
505
510
|
|
|
506
511
|
See [python-client/](python-client/) for full source and examples.
|
|
507
512
|
|
|
@@ -529,7 +534,7 @@ function App() {
|
|
|
529
534
|
|
|
530
535
|
Key features: offline queue with IndexedDB persistence, adaptive quality management, connection pool with health scoring, E2E encryption (Web Crypto API), message batching, 5 priority levels, Zustand store for external state access.
|
|
531
536
|
|
|
532
|
-
See [client/](client/) for full source and examples.
|
|
537
|
+
See [ts-client/](ts-client/) for full source and examples.
|
|
533
538
|
|
|
534
539
|
---
|
|
535
540
|
|
|
@@ -546,7 +551,7 @@ Benchmarked on AMD EPYC 7502P (32 cores / 64 threads, 128 GB RAM), Ubuntu 24.04.
|
|
|
546
551
|
|
|
547
552
|
Sub-millisecond latency. Median 0.38ms with JWT authentication. Connection handshake: 0.53ms median (Rust JWT path).
|
|
548
553
|
|
|
549
|
-
Detailed results: [Benchmarks](docs/BENCHMARKS.md) | [Fan-out](docs/BENCHMARKS_FANOUT.md) | [Rust Client](docs/BENCHMARKS_RUST_CLIENT.md) | [Python Client](docs/BENCHMARKS_PYTHON_CLIENT.md) | [
|
|
554
|
+
Detailed results: [Benchmarks](docs/BENCHMARKS.md) | [Fan-out](docs/BENCHMARKS_FANOUT.md) | [Rust Client](docs/BENCHMARKS_RUST_CLIENT.md) | [Python Client](docs/BENCHMARKS_PYTHON_CLIENT.md) | [TS Client](docs/BENCHMARKS_TS_CLIENT.md)
|
|
550
555
|
|
|
551
556
|
---
|
|
552
557
|
|
|
@@ -572,7 +577,7 @@ Working examples in the [`examples/`](examples/) directory:
|
|
|
572
577
|
- [Rust Utilities](docs/RUST_UTILITIES.md) - priority queues, rate limiters, sequencing, compression, crypto, JWT
|
|
573
578
|
- [Security](docs/SECURITY.md) - JWT, encryption, mTLS, rate limiting, circuit breaker
|
|
574
579
|
- [Deployment](docs/DEPLOYMENT.md) - production setup, Docker, Kubernetes, cluster configuration
|
|
575
|
-
- [Migration Guide](docs/MIGRATION.md) - upgrading from v1.x to v2.
|
|
580
|
+
- [Migration Guide](docs/MIGRATION.md) - upgrading from v1.x to v2.x
|
|
576
581
|
- [Contributing](CONTRIBUTING.md) - development setup and coding standards
|
|
577
582
|
- [Changelog](CHANGELOG.md) - version history
|
|
578
583
|
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const WS_PROTOCOL_VERSION = 1;
|
|
2
|
-
export declare const WS_CLIENT_VERSION = "2.
|
|
2
|
+
export declare const WS_CLIENT_VERSION = "2.4.0";
|
|
3
3
|
export declare const HEARTBEAT_INTERVAL = 15000;
|
|
4
4
|
export declare const IDLE_TIMEOUT = 40000;
|
|
5
5
|
export declare const CONNECTION_TIMEOUT = 10000;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../client/constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAMzC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAMtC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAMrC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAMnD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,aAAa,MAAM,CAAC;AAMjC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAMnC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,0BAA0B,IAAM,CAAC;AAM9C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAM1C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,wBAAwB,sBAAuC,CAAC;AAC7E,eAAO,MAAM,qBAAqB,kBAAmC,CAAC;AACtE,eAAO,MAAM,mBAAmB,gBAAiC,CAAC;AAClE,eAAO,MAAM,uBAAuB,oBAAqC,CAAC;AAO1E,eAAO,MAAM,cAAc,EAAE,MAAM,EAElC,CAAC;AAMF,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAMX,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAMX,eAAO,MAAM,QAAQ;;;;;;;;;;;CAWX,CAAC;AAQX,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAC;AAMxE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAiBd,CAAC;AAMX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;CAgBzB,CAAC;AAMX;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CA0CvC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAMxD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAQtC;AAMD,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,KAAG,OAElD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,OAG/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,WAAW,KAAG,OAGvD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,WAAW,KAAG,OAGpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,MAAM,WAAW,KAAG,OAGtD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMF,wBAwCE"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../ts-client/constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAMzC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,YAAY,QAAQ,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAMtC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAMrC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAMnD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,aAAa,MAAM,CAAC;AAMjC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAMnC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,0BAA0B,IAAM,CAAC;AAM9C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAM1C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,wBAAwB,sBAAuC,CAAC;AAC7E,eAAO,MAAM,qBAAqB,kBAAmC,CAAC;AACtE,eAAO,MAAM,mBAAmB,gBAAiC,CAAC;AAClE,eAAO,MAAM,uBAAuB,oBAAqC,CAAC;AAO1E,eAAO,MAAM,cAAc,EAAE,MAAM,EAElC,CAAC;AAMF,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAMX,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAMX,eAAO,MAAM,QAAQ;;;;;;;;;;;CAWX,CAAC;AAQX,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAC;AAMxE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAiBd,CAAC;AAMX,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;CAgBzB,CAAC;AAMX;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CA0CvC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAOhD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAMxD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAQtC;AAMD,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,KAAG,OAElD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,OAG/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,MAAM,WAAW,KAAG,OAGvD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,WAAW,KAAG,OAGpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,MAAM,WAAW,KAAG,OAGtD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMF,wBAwCE"}
|
package/dist/constants.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// Protocol Constants
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
7
7
|
export const WS_PROTOCOL_VERSION = 1;
|
|
8
|
-
export const WS_CLIENT_VERSION = '2.
|
|
8
|
+
export const WS_CLIENT_VERSION = '2.4.0';
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// Connection Constants
|
|
11
11
|
// ---------------------------------------------------------------------------
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../client/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../ts-client/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHandlers.d.ts","sourceRoot":"","sources":["../../client/examples/ChatHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,oBAAoB,SAcnC"}
|
|
1
|
+
{"version":3,"file":"ChatHandlers.d.ts","sourceRoot":"","sources":["../../ts-client/examples/ChatHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,oBAAoB,SAcnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatHandlers.js","sourceRoot":"","sources":["../../client/examples/ChatHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,UAAU,oBAAoB;IAClC,oCAAoC;IACpC,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAA2B,EAAE,EAAE;QACvE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,4BAA4B;IAC9B,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAqD,EAAE,EAAE;QACjG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAkD,EAAE,EAAE;QACjG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAkB,CAAC,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"ChatHandlers.js","sourceRoot":"","sources":["../../ts-client/examples/ChatHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,UAAU,oBAAoB;IAClC,oCAAoC;IACpC,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAA2B,EAAE,EAAE;QACvE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,4BAA4B;IAC9B,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAqD,EAAE,EAAE;QACjG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAkD,EAAE,EAAE;QACjG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAkB,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IoTHandlers.d.ts","sourceRoot":"","sources":["../../client/examples/IoTHandlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,SAYlC"}
|
|
1
|
+
{"version":3,"file":"IoTHandlers.d.ts","sourceRoot":"","sources":["../../ts-client/examples/IoTHandlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,SAYlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IoTHandlers.js","sourceRoot":"","sources":["../../client/examples/IoTHandlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAA6B,EAAE,EAAE;QAC3E,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAuE,EAAE,EAAE;QAC5G,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAqD,EAAE,EAAE;QAClG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC,CAAkB,CAAC,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"IoTHandlers.js","sourceRoot":"","sources":["../../ts-client/examples/IoTHandlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAA6B,EAAE,EAAE;QAC3E,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAuE,EAAE,EAAE;QAC5G,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAkB,CAAC,CAAC;IAErB,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAqD,EAAE,EAAE;QAClG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC,CAAkB,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventHandlers.d.ts","sourceRoot":"","sources":["../../client/handlers/EventHandlers.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,qBAAa,aAAa;IACxB;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE;QACnC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;QACzE,qBAAqB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;KACxC,GAAG,IAAI;CAGT;AAED,eAAe,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"EventHandlers.d.ts","sourceRoot":"","sources":["../../ts-client/handlers/EventHandlers.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,qBAAa,aAAa;IACxB;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE;QACnC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;QACzE,qBAAqB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;KACxC,GAAG,IAAI;CAGT;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventHandlers.js","sourceRoot":"","sources":["../../client/handlers/EventHandlers.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACxB;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,gBAGlB;QACC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACxC,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"EventHandlers.js","sourceRoot":"","sources":["../../ts-client/handlers/EventHandlers.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACxB;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,gBAGlB;QACC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IACxC,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/handlers/index.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE;IACpD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;IACrE,qBAAqB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;CACxC,GAAG,IAAI,CAaP"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts-client/handlers/index.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE;IACpD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;IACrE,qBAAqB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;CACxC,GAAG,IAAI,CAaP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../client/handlers/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAChF,EAAE;AACF,mFAAmF;AACnF,mEAAmE;AACnE,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,+DAA+D;AAC/D,+DAA+D;AAC/D,oEAAoE;AACpE,MAAM;AAEN,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,gBAGnC;IACC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAElD,kDAAkD;IAClD,8DAA8D;IAC9D,4CAA4C;IAE5C,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IAErF,IAAI,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QAC3C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts-client/handlers/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAChF,EAAE;AACF,mFAAmF;AACnF,mEAAmE;AACnE,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,+DAA+D;AAC/D,+DAA+D;AAC/D,oEAAoE;AACpE,MAAM;AAEN,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,gBAGnC;IACC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAElD,kDAAkD;IAClD,8DAA8D;IAC9D,4CAA4C;IAE5C,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IAErF,IAAI,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QAC3C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
package/dist/hooks/useWSE.d.ts
CHANGED
|
@@ -37,6 +37,12 @@ export interface UseWSEConfig extends Partial<WSEConfig> {
|
|
|
37
37
|
registerHandler: (type: string, handler: (msg: any) => void) => void;
|
|
38
38
|
getRegisteredHandlers?: () => string[];
|
|
39
39
|
}) => void;
|
|
40
|
+
/**
|
|
41
|
+
* Throttle interval in ms for non-system events (default: 0 = disabled).
|
|
42
|
+
* When set, events of the same type arriving faster than this interval
|
|
43
|
+
* are silently dropped before reaching handlers.
|
|
44
|
+
*/
|
|
45
|
+
eventThrottleMs?: number;
|
|
40
46
|
}
|
|
41
47
|
export declare function useWSE(token?: string, initialTopics?: string[], config?: UseWSEConfig): UseWSEReturn;
|
|
42
48
|
//# sourceMappingURL=useWSE.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWSE.d.ts","sourceRoot":"","sources":["../../client/hooks/useWSE.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,YAAY,EACZ,SAAS,EAMV,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"useWSE.d.ts","sourceRoot":"","sources":["../../ts-client/hooks/useWSE.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,YAAY,EACZ,SAAS,EAMV,MAAM,UAAU,CAAC;AAoIlB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC;CACF;AAiED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,OAAO,CAAC,SAAS,CAAC;IACtD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACZ,iBAAiB,EAAE,CAAC,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAE,KAAK,IAAI,CAAC;QACvE,iBAAiB,EAAE,MAAM,IAAI,CAAC;KAC/B,GAAG,IAAI,CAAC;IAET;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,EAAE;QACpC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;QACrE,qBAAqB,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;KACxC,KAAK,IAAI,CAAC;IAEX;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,MAAM,CACpB,KAAK,CAAC,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,MAAM,CAAC,EAAE,YAAY,GACpB,YAAY,CAmvCd"}
|
package/dist/hooks/useWSE.js
CHANGED
|
@@ -53,8 +53,7 @@ let globalWSEInstance = null;
|
|
|
53
53
|
let isGloballyConnecting = false;
|
|
54
54
|
let lastConnectionAttemptTime = 0;
|
|
55
55
|
const MIN_CONNECTION_INTERVAL = 500;
|
|
56
|
-
// Circuit breaker check interval
|
|
57
|
-
let circuitBreakerCheckInterval = null;
|
|
56
|
+
// Circuit breaker check interval (moved to per-instance ref inside hook)
|
|
58
57
|
// Event deduplication at the module level
|
|
59
58
|
const processedEvents = new Map();
|
|
60
59
|
const EVENT_CACHE_TIME = 60 * 1000;
|
|
@@ -191,9 +190,11 @@ export function useWSE(token, initialTopics, config) {
|
|
|
191
190
|
const initialSyncSentRef = useRef(false);
|
|
192
191
|
// Track current token to detect changes
|
|
193
192
|
const currentTokenRef = useRef(undefined);
|
|
193
|
+
// Per-instance circuit breaker interval (not module-level)
|
|
194
|
+
const circuitBreakerIntervalRef = useRef(null);
|
|
194
195
|
// Add timestamp tracking for rate limiting
|
|
195
196
|
const lastEventTimestampRef = useRef(new Map());
|
|
196
|
-
const EVENT_THROTTLE_MS =
|
|
197
|
+
const EVENT_THROTTLE_MS = config?.eventThrottleMs ?? 0;
|
|
197
198
|
// Critical handlers from config (defaults to empty)
|
|
198
199
|
const criticalHandlers = config?.criticalHandlers || [];
|
|
199
200
|
// Memoize config with stable reference
|
|
@@ -225,11 +226,11 @@ export function useWSE(token, initialTopics, config) {
|
|
|
225
226
|
// ---------------------------------------------------------------------------
|
|
226
227
|
const startCircuitBreakerCheck = useCallback(() => {
|
|
227
228
|
// Clear any existing interval so updated validToken closure is used
|
|
228
|
-
if (
|
|
229
|
-
clearInterval(
|
|
230
|
-
|
|
229
|
+
if (circuitBreakerIntervalRef.current) {
|
|
230
|
+
clearInterval(circuitBreakerIntervalRef.current);
|
|
231
|
+
circuitBreakerIntervalRef.current = null;
|
|
231
232
|
}
|
|
232
|
-
|
|
233
|
+
circuitBreakerIntervalRef.current = setInterval(() => {
|
|
233
234
|
store.checkCircuitBreakerTimeout();
|
|
234
235
|
if (store.canReconnect() && store.connectionState === ConnectionState.ERROR) {
|
|
235
236
|
const manager = connectionManagerRef.current;
|
|
@@ -243,9 +244,9 @@ export function useWSE(token, initialTopics, config) {
|
|
|
243
244
|
}, 5000);
|
|
244
245
|
}, [store, validToken]);
|
|
245
246
|
const stopCircuitBreakerCheck = useCallback(() => {
|
|
246
|
-
if (
|
|
247
|
-
clearInterval(
|
|
248
|
-
|
|
247
|
+
if (circuitBreakerIntervalRef.current) {
|
|
248
|
+
clearInterval(circuitBreakerIntervalRef.current);
|
|
249
|
+
circuitBreakerIntervalRef.current = null;
|
|
249
250
|
}
|
|
250
251
|
}, []);
|
|
251
252
|
// ---------------------------------------------------------------------------
|
|
@@ -436,8 +437,7 @@ export function useWSE(token, initialTopics, config) {
|
|
|
436
437
|
// ---------------------------------------------------------------------------
|
|
437
438
|
const handleIncomingMessage = useCallback((data) => {
|
|
438
439
|
const processor = messageProcessorRef.current;
|
|
439
|
-
|
|
440
|
-
if (!processor || !monitor)
|
|
440
|
+
if (!processor)
|
|
441
441
|
return;
|
|
442
442
|
try {
|
|
443
443
|
let parsed;
|
|
@@ -483,24 +483,30 @@ export function useWSE(token, initialTopics, config) {
|
|
|
483
483
|
return;
|
|
484
484
|
}
|
|
485
485
|
}
|
|
486
|
-
// Age filtering
|
|
487
|
-
|
|
486
|
+
// Age filtering -- skipped for recovery-stamped messages (tp/e/o). A
|
|
487
|
+
// replayed message intentionally keeps its original (old) ts, so age-
|
|
488
|
+
// filtering it would silently break recovery; dedup and ordering for
|
|
489
|
+
// stamped messages is handled downstream by (epoch, offset).
|
|
490
|
+
if (parsed && parsed.ts && !(parsed.tp && parsed.e)) {
|
|
488
491
|
const eventTime = new Date(parsed.ts).getTime();
|
|
489
492
|
const now = Date.now();
|
|
490
493
|
const age = now - eventTime;
|
|
491
494
|
const eventType = parsed.t;
|
|
492
495
|
const connectionTime = Date.now() - (window.__wseConnectionStartTime || Date.now());
|
|
493
496
|
const isNewConnection = connectionTime < 5000;
|
|
497
|
+
// Critical handshake events are never age-filtered
|
|
498
|
+
const isHandshakeEvent = eventType === 'server_ready' || eventType === 'server_hello'
|
|
499
|
+
|| eventType === 'error' || eventType === 'subscription_update';
|
|
494
500
|
if (isNewConnection) {
|
|
495
|
-
if (eventType && eventType.includes('snapshot')) {
|
|
496
|
-
logger.debug(`Accepting ${eventType}
|
|
501
|
+
if (isHandshakeEvent || (eventType && eventType.includes('snapshot'))) {
|
|
502
|
+
logger.debug(`Accepting ${eventType} during new connection`);
|
|
497
503
|
}
|
|
498
504
|
else if (age > 1000) {
|
|
499
505
|
logger.debug(`Rejecting old ${eventType} event during new connection (${Math.round(age / 1000)}s old)`);
|
|
500
506
|
return;
|
|
501
507
|
}
|
|
502
508
|
}
|
|
503
|
-
else {
|
|
509
|
+
else if (!isHandshakeEvent) {
|
|
504
510
|
const maxAge = eventType && (eventType.includes('snapshot') ||
|
|
505
511
|
eventType.includes('health_update') ||
|
|
506
512
|
eventType.includes('connection_update')) ? 60000 : 5000;
|
|
@@ -510,17 +516,14 @@ export function useWSE(token, initialTopics, config) {
|
|
|
510
516
|
}
|
|
511
517
|
}
|
|
512
518
|
}
|
|
513
|
-
//
|
|
519
|
+
// Track event IDs for diagnostics (actual dedup is in MessageProcessor's
|
|
520
|
+
// EventSequencer -- filtering here would cause the sequencer to miss events)
|
|
514
521
|
if (parsed && parsed.id) {
|
|
515
522
|
if (processedEvents.size >= MAX_CACHED_EVENTS) {
|
|
516
523
|
const oldestKey = processedEvents.keys().next().value;
|
|
517
524
|
if (oldestKey)
|
|
518
525
|
processedEvents.delete(oldestKey);
|
|
519
526
|
}
|
|
520
|
-
if (processedEvents.has(parsed.id)) {
|
|
521
|
-
logger.debug(`Skipping globally duplicate event: ${parsed.id}`);
|
|
522
|
-
return;
|
|
523
|
-
}
|
|
524
527
|
processedEvents.set(parsed.id, Date.now());
|
|
525
528
|
}
|
|
526
529
|
// Check event type throttling
|
|
@@ -551,14 +554,6 @@ export function useWSE(token, initialTopics, config) {
|
|
|
551
554
|
catch (e) {
|
|
552
555
|
logger.debug('Could not pre-parse message for deduplication:', e);
|
|
553
556
|
}
|
|
554
|
-
// Record metrics
|
|
555
|
-
monitor.recordPacketReceived();
|
|
556
|
-
if (data instanceof ArrayBuffer) {
|
|
557
|
-
monitor.recordBytes(data.byteLength);
|
|
558
|
-
}
|
|
559
|
-
else {
|
|
560
|
-
monitor.recordBytes(data.length);
|
|
561
|
-
}
|
|
562
557
|
// Process the message
|
|
563
558
|
processor.processIncoming(data).catch(error => {
|
|
564
559
|
logger.error('Failed to process incoming message:', error);
|
|
@@ -680,6 +675,34 @@ export function useWSE(token, initialTopics, config) {
|
|
|
680
675
|
window.removeEventListener('subscriptionUpdate', handleSubscriptionUpdate);
|
|
681
676
|
};
|
|
682
677
|
}, []);
|
|
678
|
+
// Recover the missed range when MessageProcessor reports a per-topic offset
|
|
679
|
+
// gap (offset jumped ahead). Re-request the topic with recover=true from the
|
|
680
|
+
// last in-order position; the server replays last+1..head, which arrives in
|
|
681
|
+
// order and advances the position past the gap.
|
|
682
|
+
useEffect(() => {
|
|
683
|
+
const handleRecoveryGap = (event) => {
|
|
684
|
+
const topic = event.detail?.topic;
|
|
685
|
+
if (!topic)
|
|
686
|
+
return;
|
|
687
|
+
const subs = useWSEStore.getState().subscriptions;
|
|
688
|
+
if (!subs.serverRecoveryEnabled)
|
|
689
|
+
return;
|
|
690
|
+
const pos = subs.recoveryState[topic];
|
|
691
|
+
if (!pos)
|
|
692
|
+
return;
|
|
693
|
+
sendMessage('subscription_update', {
|
|
694
|
+
action: 'subscribe',
|
|
695
|
+
topics: [topic],
|
|
696
|
+
recover: true,
|
|
697
|
+
recovery: { [topic]: { epoch: pos.epoch, offset: pos.offset } },
|
|
698
|
+
}, { priority: MessagePriority.HIGH });
|
|
699
|
+
logger.info(`Recovery requested after gap on topic: ${topic}`);
|
|
700
|
+
};
|
|
701
|
+
window.addEventListener('wseRecoveryGap', handleRecoveryGap);
|
|
702
|
+
return () => {
|
|
703
|
+
window.removeEventListener('wseRecoveryGap', handleRecoveryGap);
|
|
704
|
+
};
|
|
705
|
+
}, [sendMessage]);
|
|
683
706
|
// Handle snapshot request events
|
|
684
707
|
useEffect(() => {
|
|
685
708
|
const handleSnapshotRequest = (event) => {
|
|
@@ -762,6 +785,8 @@ export function useWSE(token, initialTopics, config) {
|
|
|
762
785
|
networkMonitorRef.current = globalWSEInstance.networkMonitor;
|
|
763
786
|
offlineQueueRef.current = globalWSEInstance.offlineQueue;
|
|
764
787
|
initializedRef.current = true;
|
|
788
|
+
// Restart circuit breaker check (cleared on previous unmount)
|
|
789
|
+
startCircuitBreakerCheck();
|
|
765
790
|
return;
|
|
766
791
|
}
|
|
767
792
|
const now = Date.now();
|
|
@@ -874,6 +899,10 @@ export function useWSE(token, initialTopics, config) {
|
|
|
874
899
|
connectionManagerRef.current = connectionManager;
|
|
875
900
|
networkMonitorRef.current = networkMonitor;
|
|
876
901
|
offlineQueueRef.current = offlineQueue;
|
|
902
|
+
// Feed the monitor real round-trip latency from the single PONG-parsing
|
|
903
|
+
// site so its jitter/quality reflect the live connection (read via the
|
|
904
|
+
// ref so it survives monitor re-creation).
|
|
905
|
+
messageProcessor.setLatencyListener((l) => networkMonitorRef.current?.recordLatency(l));
|
|
877
906
|
initializedRef.current = true;
|
|
878
907
|
try {
|
|
879
908
|
await offlineQueue.initialize();
|
|
@@ -983,6 +1012,11 @@ export function useWSE(token, initialTopics, config) {
|
|
|
983
1012
|
};
|
|
984
1013
|
return () => {
|
|
985
1014
|
logger.info('useWSE effect cleanup triggered');
|
|
1015
|
+
// Always clean up per-instance intervals to prevent leaks
|
|
1016
|
+
if (circuitBreakerIntervalRef.current) {
|
|
1017
|
+
clearInterval(circuitBreakerIntervalRef.current);
|
|
1018
|
+
circuitBreakerIntervalRef.current = null;
|
|
1019
|
+
}
|
|
986
1020
|
if (globalWSEInstance && globalWSEInstance.token === validToken) {
|
|
987
1021
|
if (currentTokenRef.current !== validToken) {
|
|
988
1022
|
logger.info('Token changing, destroying global instance immediately');
|