@crowdedkingdoms/crowdyjs 17.0.1-test.1 → 17.1.0-dev.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/MIGRATION.md +55 -0
- package/README.md +13 -0
- package/dist/binary-relay.d.ts +51 -1
- package/dist/binary-relay.d.ts.map +1 -1
- package/dist/binary-relay.js +99 -2
- package/dist/binary-wire.d.ts +28 -0
- package/dist/binary-wire.d.ts.map +1 -1
- package/dist/binary-wire.js +60 -0
- package/dist/default-origin.d.ts +6 -6
- package/dist/default-origin.d.ts.map +1 -1
- package/dist/default-origin.js +6 -6
- package/dist/domains/udp.d.ts +7 -0
- package/dist/domains/udp.d.ts.map +1 -1
- package/dist/domains/udp.js +24 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/realtime.d.ts +35 -0
- package/dist/realtime.d.ts.map +1 -1
- package/dist/realtime.js +22 -1
- package/package.json +1 -1
package/MIGRATION.md
CHANGED
|
@@ -1,3 +1,58 @@
|
|
|
1
|
+
# CrowdyJS v17.1 — binary-relay sends are bundled
|
|
2
|
+
|
|
3
|
+
**Nothing removed.** `17.1.0` (2026-09-13). On the binary relay
|
|
4
|
+
(`realtime.binaryTransport: true`) the SDK now packs the messages you send
|
|
5
|
+
within a short window into one `MESSAGE_BUNDLE` datagram
|
|
6
|
+
(`[2]{[u16 LE len][signed message]}…`) — the framing the server has always
|
|
7
|
+
used for its notifications, accepted on the uplink by Buddy v0.27.0+. Every
|
|
8
|
+
member is still a complete, individually HMAC-signed message; only the datagram
|
|
9
|
+
boundary moved. The GraphQL transport is unchanged: the proxy signs one message
|
|
10
|
+
per mutation and cannot bundle.
|
|
11
|
+
|
|
12
|
+
What changes for you:
|
|
13
|
+
|
|
14
|
+
- **Nothing in the send API.** `client.udp.sendActorUpdate` and friends resolve
|
|
15
|
+
as before. On the relay a send is now *accepted* rather than *transmitted*
|
|
16
|
+
when it resolves: the frame leaves when `realtime.bundleWindowMs` (default
|
|
17
|
+
`1`) has passed since the bundle opened, when the next message would not fit
|
|
18
|
+
in 1232 bytes or the 32-member cap, on `client.udp.flushSends()` (also
|
|
19
|
+
`client.realtime.flushSends()`), after every `...AndWait` send, and on
|
|
20
|
+
`disconnect()`. A lone message is sent unwrapped, so a client sending one
|
|
21
|
+
message per window puts the same bytes on the wire it always did. A message
|
|
22
|
+
too large to travel inside any bundle (> 1229 bytes) goes alone.
|
|
23
|
+
- **Frame-end flush.** A game loop that sends several updates per frame gets
|
|
24
|
+
them in one datagram with no extra latency by calling
|
|
25
|
+
`client.udp.flushSends()` at the end of the frame; otherwise the window
|
|
26
|
+
timer flushes within ~1 ms. In a **hidden tab** (`document.visibilityState
|
|
27
|
+
=== 'hidden'`) browsers clamp timers to a second or more, so the transport
|
|
28
|
+
flushes every send immediately there — a background heartbeat leaves as it
|
|
29
|
+
always did.
|
|
30
|
+
- **Counters.** `client.realtime.binaryRelayStats()` returns
|
|
31
|
+
`{ messagesSent, framesSent, bundlesSent, bytesSent, messagesDropped }`
|
|
32
|
+
(`framesSent <= messagesSent`; `messagesDropped` counts members that were
|
|
33
|
+
pending when the socket went away inside the window). A local diagnostic,
|
|
34
|
+
not a bill.
|
|
35
|
+
- **Server requirement.** The replication server must unpack client bundles
|
|
36
|
+
(Buddy v0.27.0+). Against an older server set `realtime.bundleSends: false`;
|
|
37
|
+
otherwise any two messages sent within a window are dropped together.
|
|
38
|
+
- **Opt out.** `realtime: { bundleSends: false }` is exactly the 17.0
|
|
39
|
+
behaviour: one BINARY frame per message, sent synchronously.
|
|
40
|
+
|
|
41
|
+
Added:
|
|
42
|
+
|
|
43
|
+
- `RealtimeConfig.bundleSends` (default `true`), `RealtimeConfig.bundleWindowMs`
|
|
44
|
+
(default `1`).
|
|
45
|
+
- `client.udp.flushSends()`, `client.realtime.flushSends()`,
|
|
46
|
+
`client.realtime.binaryRelayStats()`.
|
|
47
|
+
- `BinaryRelayTransport.flushSends()` / `.stats()`; `BinaryRelayConfig.bundleSends`
|
|
48
|
+
/ `.bundleWindowMs`; `BinaryRelaySendStats`.
|
|
49
|
+
- Wire helpers: `packMessageBundle`, `bundleSizeOf`, `BUNDLE_HEADER_BYTES`,
|
|
50
|
+
`BUNDLE_LENGTH_PREFIX_BYTES`, `RELAY_MAX_BUNDLE_MEMBERS`,
|
|
51
|
+
`RELAY_MAX_BUNDLE_MEMBER_BYTES`.
|
|
52
|
+
|
|
53
|
+
CrowdyCPP 0.36.0 ships the same behaviour natively (`Config::bundleSends`,
|
|
54
|
+
`Config::bundleWindowMs`, `Connection::flushSends()`, `Stats::bundlesSent`).
|
|
55
|
+
|
|
1
56
|
# CrowdyJS v17.0 — a bound GitHub repository is the working tree; GitHub stays optional
|
|
2
57
|
|
|
3
58
|
**Breaking.** `17.0.0` (2026-09-13). Tracks ck-api `v2.0.0`. A project is
|
package/README.md
CHANGED
|
@@ -419,6 +419,19 @@ one is missing and wait for either a matching notification or
|
|
|
419
419
|
`GenericErrorResponse`. `sendChannelMessage` broadcasts an opaque payload on a
|
|
420
420
|
channel.
|
|
421
421
|
|
|
422
|
+
### Bundled sends on the binary relay
|
|
423
|
+
|
|
424
|
+
With `realtime: { binaryTransport: true }` the SDK signs each message itself
|
|
425
|
+
and, since 17.1, packs the messages sent within `realtime.bundleWindowMs`
|
|
426
|
+
(default 1 ms) into one `MESSAGE_BUNDLE` datagram — the same framing the
|
|
427
|
+
server uses for its notifications, accepted on the uplink by Buddy v0.27.0+. A
|
|
428
|
+
lone message goes out unwrapped. Call `client.udp.flushSends()` at the end of a
|
|
429
|
+
frame to put that frame's sends on the wire without waiting for the window;
|
|
430
|
+
the `...AndWait` variants and `disconnect()` flush on their own.
|
|
431
|
+
`client.realtime.binaryRelayStats()` reports messages, frames, bundles and
|
|
432
|
+
bytes. `realtime: { bundleSends: false }` restores one datagram per message;
|
|
433
|
+
the GraphQL transport is unaffected either way.
|
|
434
|
+
|
|
422
435
|
### Actor-to-actor messages
|
|
423
436
|
|
|
424
437
|
```ts
|
package/dist/binary-relay.d.ts
CHANGED
|
@@ -70,6 +70,37 @@ export interface BinaryRelayConfig {
|
|
|
70
70
|
retryInitialDelayMs?: number;
|
|
71
71
|
retryMaxDelayMs?: number;
|
|
72
72
|
logger?: CrowdyLogger;
|
|
73
|
+
/**
|
|
74
|
+
* Pack the datagrams sent within {@link bundleWindowMs} into one
|
|
75
|
+
* MESSAGE_BUNDLE frame (the server does the same on the downlink). A lone
|
|
76
|
+
* message goes out unwrapped. Requires a replication server that accepts
|
|
77
|
+
* client bundles (Buddy v0.27.0+). Defaults to `true`; `false` sends every
|
|
78
|
+
* message as its own frame, as CrowdyJS did before 17.1.
|
|
79
|
+
*/
|
|
80
|
+
bundleSends?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* How long a pending bundle waits for more messages before it is flushed, in
|
|
83
|
+
* milliseconds. Defaults to `1`. `0` flushes on the next macrotask with no
|
|
84
|
+
* deliberate wait, so sends made in one synchronous burst still share a
|
|
85
|
+
* frame. Ignored when {@link bundleSends} is false.
|
|
86
|
+
*/
|
|
87
|
+
bundleWindowMs?: number;
|
|
88
|
+
}
|
|
89
|
+
/** Uplink counters kept by the relay transport (see {@link BinaryRelayTransport.stats}). */
|
|
90
|
+
export interface BinaryRelaySendStats {
|
|
91
|
+
/** Messages accepted for sending (each `sendFrame` call). */
|
|
92
|
+
messagesSent: number;
|
|
93
|
+
/** BINARY frames handed to the socket; at most `messagesSent`. */
|
|
94
|
+
framesSent: number;
|
|
95
|
+
/** Frames that were MESSAGE_BUNDLE wrappers (two or more members). */
|
|
96
|
+
bundlesSent: number;
|
|
97
|
+
/** Bytes handed to the socket, framing included. */
|
|
98
|
+
bytesSent: number;
|
|
99
|
+
/**
|
|
100
|
+
* Messages that were pending in a bundle when the socket went away before
|
|
101
|
+
* the window closed. UDP would have lost them too; the count says how often.
|
|
102
|
+
*/
|
|
103
|
+
messagesDropped: number;
|
|
73
104
|
}
|
|
74
105
|
export declare class BinaryRelayTransport {
|
|
75
106
|
private readonly callbacks;
|
|
@@ -87,7 +118,15 @@ export declare class BinaryRelayTransport {
|
|
|
87
118
|
private everReady;
|
|
88
119
|
private retryTimer;
|
|
89
120
|
private generation;
|
|
121
|
+
private readonly bundleSends;
|
|
122
|
+
private readonly bundleWindowMs;
|
|
123
|
+
private pendingMembers;
|
|
124
|
+
private pendingBytes;
|
|
125
|
+
private bundleTimer;
|
|
126
|
+
private readonly sendStats;
|
|
90
127
|
constructor(config: BinaryRelayConfig, callbacks: BinaryRelayCallbacks);
|
|
128
|
+
/** Snapshot of the uplink counters. */
|
|
129
|
+
stats(): BinaryRelaySendStats;
|
|
91
130
|
/** True when the socket is open and the `ready` handshake completed. */
|
|
92
131
|
isReady(): boolean;
|
|
93
132
|
/** The session signing context (gameTokenId + HMAC key), once ready. */
|
|
@@ -96,8 +135,19 @@ export declare class BinaryRelayTransport {
|
|
|
96
135
|
disconnect(): void;
|
|
97
136
|
/** Restart (e.g. after a token refresh) while remaining desired. */
|
|
98
137
|
restart(): void;
|
|
99
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Send one pre-serialized, signed Buddy message. With `bundleSends` it joins
|
|
140
|
+
* the pending MESSAGE_BUNDLE and leaves with it (see {@link flushSends});
|
|
141
|
+
* otherwise it is one BINARY frame right now.
|
|
142
|
+
*/
|
|
100
143
|
sendFrame(frame: Uint8Array): void;
|
|
144
|
+
/**
|
|
145
|
+
* Put the pending bundle on the wire now instead of at the end of the
|
|
146
|
+
* window. Call it at the end of a frame when that frame's sends should not
|
|
147
|
+
* wait. No-op when nothing is pending.
|
|
148
|
+
*/
|
|
149
|
+
flushSends(): void;
|
|
150
|
+
private transmit;
|
|
101
151
|
private open;
|
|
102
152
|
private handleControlFrame;
|
|
103
153
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-relay.d.ts","sourceRoot":"","sources":["../src/binary-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"binary-relay.d.ts","sourceRoot":"","sources":["../src/binary-relay.ts"],"names":[],"mappings":"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"}
|
package/dist/binary-relay.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { silentLogger } from './logger.js';
|
|
15
15
|
import { CrowdyRealtimeError } from './errors.js';
|
|
16
|
-
import { createSignContext, parseRelayFrame, } from './binary-wire.js';
|
|
16
|
+
import { BUNDLE_LENGTH_PREFIX_BYTES, bundleSizeOf, createSignContext, packMessageBundle, parseRelayFrame, RELAY_MAX_BUNDLE_MEMBER_BYTES, RELAY_MAX_BUNDLE_MEMBERS, RELAY_MAX_DATAGRAM_BYTES, } from './binary-wire.js';
|
|
17
17
|
export const RELAY_SUBPROTOCOL = 'crowdy-relay-v1';
|
|
18
18
|
const BEARER_PREFIX = 'bearer.';
|
|
19
19
|
/** Consecutive pre-ready failures before we declare the relay unavailable. */
|
|
@@ -69,6 +69,15 @@ export function isSameEstate(current, candidate) {
|
|
|
69
69
|
const site = (h) => h.split('.').slice(-2).join('.');
|
|
70
70
|
return site(a) === site(b) && site(a).includes('.');
|
|
71
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* True in a browser whose document is hidden (background tab). Browsers clamp
|
|
74
|
+
* timers there, so the bundle window cannot be honoured; the transport flushes
|
|
75
|
+
* each send immediately instead. False outside a document (Node, workers).
|
|
76
|
+
*/
|
|
77
|
+
function documentIsHidden() {
|
|
78
|
+
const doc = globalThis.document;
|
|
79
|
+
return doc?.visibilityState === 'hidden';
|
|
80
|
+
}
|
|
72
81
|
function base64UrlEncode(value) {
|
|
73
82
|
return btoa(value).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
|
|
74
83
|
}
|
|
@@ -84,11 +93,27 @@ export class BinaryRelayTransport {
|
|
|
84
93
|
this.everReady = false;
|
|
85
94
|
this.retryTimer = null;
|
|
86
95
|
this.generation = 0;
|
|
96
|
+
this.pendingMembers = [];
|
|
97
|
+
this.pendingBytes = 0;
|
|
98
|
+
this.bundleTimer = null;
|
|
99
|
+
this.sendStats = {
|
|
100
|
+
messagesSent: 0,
|
|
101
|
+
framesSent: 0,
|
|
102
|
+
bundlesSent: 0,
|
|
103
|
+
bytesSent: 0,
|
|
104
|
+
messagesDropped: 0,
|
|
105
|
+
};
|
|
87
106
|
this.url = config.url;
|
|
88
107
|
this.logger = config.logger ?? silentLogger;
|
|
89
108
|
this.retryAttempts = config.retryAttempts ?? 8;
|
|
90
109
|
this.retryInitialDelayMs = config.retryInitialDelayMs ?? 250;
|
|
91
110
|
this.retryMaxDelayMs = config.retryMaxDelayMs ?? 5000;
|
|
111
|
+
this.bundleSends = config.bundleSends ?? true;
|
|
112
|
+
this.bundleWindowMs = Math.max(0, config.bundleWindowMs ?? 1);
|
|
113
|
+
}
|
|
114
|
+
/** Snapshot of the uplink counters. */
|
|
115
|
+
stats() {
|
|
116
|
+
return { ...this.sendStats };
|
|
92
117
|
}
|
|
93
118
|
/** True when the socket is open and the `ready` handshake completed. */
|
|
94
119
|
isReady() {
|
|
@@ -109,6 +134,8 @@ export class BinaryRelayTransport {
|
|
|
109
134
|
}
|
|
110
135
|
disconnect() {
|
|
111
136
|
this.desired = false;
|
|
137
|
+
// Whatever the last frame queued goes out before the socket does.
|
|
138
|
+
this.flushSends();
|
|
112
139
|
if (this.retryTimer) {
|
|
113
140
|
clearTimeout(this.retryTimer);
|
|
114
141
|
this.retryTimer = null;
|
|
@@ -137,7 +164,11 @@ export class BinaryRelayTransport {
|
|
|
137
164
|
this.appId = appId;
|
|
138
165
|
this.open();
|
|
139
166
|
}
|
|
140
|
-
/**
|
|
167
|
+
/**
|
|
168
|
+
* Send one pre-serialized, signed Buddy message. With `bundleSends` it joins
|
|
169
|
+
* the pending MESSAGE_BUNDLE and leaves with it (see {@link flushSends});
|
|
170
|
+
* otherwise it is one BINARY frame right now.
|
|
171
|
+
*/
|
|
141
172
|
sendFrame(frame) {
|
|
142
173
|
if (!this.isReady() || !this.ws) {
|
|
143
174
|
throw new CrowdyRealtimeError('Binary relay is not connected', {
|
|
@@ -145,7 +176,73 @@ export class BinaryRelayTransport {
|
|
|
145
176
|
retryable: true,
|
|
146
177
|
});
|
|
147
178
|
}
|
|
179
|
+
if (frame.length === 0)
|
|
180
|
+
return;
|
|
181
|
+
this.sendStats.messagesSent += 1;
|
|
182
|
+
if (!this.bundleSends) {
|
|
183
|
+
this.transmit(frame, false);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Too big to travel inside any bundle: what is pending goes first, then
|
|
187
|
+
// this one alone (the server does the same with an oversize notification).
|
|
188
|
+
if (frame.length > RELAY_MAX_BUNDLE_MEMBER_BYTES) {
|
|
189
|
+
this.flushSends();
|
|
190
|
+
this.transmit(frame, false);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const wouldBe = this.pendingBytes + BUNDLE_LENGTH_PREFIX_BYTES + frame.length;
|
|
194
|
+
if (this.pendingMembers.length > 0 &&
|
|
195
|
+
(wouldBe > RELAY_MAX_DATAGRAM_BYTES ||
|
|
196
|
+
this.pendingMembers.length >= RELAY_MAX_BUNDLE_MEMBERS)) {
|
|
197
|
+
this.flushSends();
|
|
198
|
+
}
|
|
199
|
+
if (this.pendingMembers.length === 0) {
|
|
200
|
+
this.pendingBytes = bundleSizeOf([]);
|
|
201
|
+
this.bundleTimer = setTimeout(() => {
|
|
202
|
+
this.bundleTimer = null;
|
|
203
|
+
this.flushSends();
|
|
204
|
+
}, this.bundleWindowMs);
|
|
205
|
+
}
|
|
206
|
+
this.pendingMembers.push(frame);
|
|
207
|
+
this.pendingBytes += BUNDLE_LENGTH_PREFIX_BYTES + frame.length;
|
|
208
|
+
// A hidden tab has no frame loop and its timers are throttled to a second
|
|
209
|
+
// or more, so a heartbeat sent from one would sit in the bundle far longer
|
|
210
|
+
// than the window says. Nothing else is coming: send it now.
|
|
211
|
+
if (documentIsHidden())
|
|
212
|
+
this.flushSends();
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Put the pending bundle on the wire now instead of at the end of the
|
|
216
|
+
* window. Call it at the end of a frame when that frame's sends should not
|
|
217
|
+
* wait. No-op when nothing is pending.
|
|
218
|
+
*/
|
|
219
|
+
flushSends() {
|
|
220
|
+
if (this.bundleTimer) {
|
|
221
|
+
clearTimeout(this.bundleTimer);
|
|
222
|
+
this.bundleTimer = null;
|
|
223
|
+
}
|
|
224
|
+
const members = this.pendingMembers;
|
|
225
|
+
if (members.length === 0)
|
|
226
|
+
return;
|
|
227
|
+
this.pendingMembers = [];
|
|
228
|
+
this.pendingBytes = 0;
|
|
229
|
+
if (!this.isReady() || !this.ws) {
|
|
230
|
+
// The socket went away inside the window. These were fire-and-forget
|
|
231
|
+
// datagrams; UDP would have lost them too. Count, do not throw: the
|
|
232
|
+
// caller that queued them has long since returned.
|
|
233
|
+
this.sendStats.messagesDropped += members.length;
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
this.transmit(packMessageBundle(members), members.length > 1);
|
|
237
|
+
}
|
|
238
|
+
transmit(frame, wrapped) {
|
|
239
|
+
if (!this.ws)
|
|
240
|
+
return;
|
|
148
241
|
this.ws.send(frame);
|
|
242
|
+
this.sendStats.framesSent += 1;
|
|
243
|
+
this.sendStats.bytesSent += frame.length;
|
|
244
|
+
if (wrapped)
|
|
245
|
+
this.sendStats.bundlesSent += 1;
|
|
149
246
|
}
|
|
150
247
|
open() {
|
|
151
248
|
const token = this.callbacks.getToken();
|
package/dist/binary-wire.d.ts
CHANGED
|
@@ -15,6 +15,34 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { UdpNotification } from './realtime.js';
|
|
17
17
|
export declare const RELAY_MAX_DATAGRAM_BYTES = 1232;
|
|
18
|
+
/**
|
|
19
|
+
* MESSAGE_BUNDLE framing: `[1B type=2]{[2B u16 LE len][full message]}...` in
|
|
20
|
+
* both directions. No count field, every member is a complete signed message,
|
|
21
|
+
* the wrapper carries no auth of its own, and bundles never nest. The server
|
|
22
|
+
* has always bundled notifications; Buddy v0.27.0+ accepts client bundles too
|
|
23
|
+
* ({@link packMessageBundle}, sent by the binary relay transport).
|
|
24
|
+
*/
|
|
25
|
+
export declare const BUNDLE_HEADER_BYTES = 1;
|
|
26
|
+
export declare const BUNDLE_LENGTH_PREFIX_BYTES = 2;
|
|
27
|
+
/** Cap on members per datagram, matching Buddy's reader and writer. */
|
|
28
|
+
export declare const RELAY_MAX_BUNDLE_MEMBERS = 32;
|
|
29
|
+
/** Largest single message that can travel inside a bundle at all. */
|
|
30
|
+
export declare const RELAY_MAX_BUNDLE_MEMBER_BYTES: number;
|
|
31
|
+
/**
|
|
32
|
+
* Bytes a type-2 datagram carrying `members` would occupy (header included).
|
|
33
|
+
*/
|
|
34
|
+
export declare function bundleSizeOf(members: readonly Uint8Array[]): number;
|
|
35
|
+
/**
|
|
36
|
+
* Pack complete signed messages into one datagram. One member is returned
|
|
37
|
+
* unwrapped — the 3-byte wrapper buys nothing for a lone message, and the
|
|
38
|
+
* server does the same on the downlink. Two or more become a MESSAGE_BUNDLE.
|
|
39
|
+
*
|
|
40
|
+
* Throws on an empty list, a zero-length member, more than
|
|
41
|
+
* {@link RELAY_MAX_BUNDLE_MEMBERS} members, or a frame that would exceed
|
|
42
|
+
* {@link RELAY_MAX_DATAGRAM_BYTES}: callers decide what to flush before they
|
|
43
|
+
* get here (see `BinaryRelayTransport`).
|
|
44
|
+
*/
|
|
45
|
+
export declare function packMessageBundle(members: readonly Uint8Array[]): Uint8Array;
|
|
18
46
|
/** Wire opcodes (mirror of game-api / Buddy `UdpMessageType`). */
|
|
19
47
|
export declare const WireMessageType: {
|
|
20
48
|
readonly MESSAGE_BUNDLE: 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-wire.d.ts","sourceRoot":"","sources":["../src/binary-wire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"binary-wire.d.ts","sourceRoot":"","sources":["../src/binary-wire.ts"],"names":[],"mappings":"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"}
|
package/dist/binary-wire.js
CHANGED
|
@@ -15,6 +15,66 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { decodeBase64, encodeBase64 } from './utils.js';
|
|
17
17
|
export const RELAY_MAX_DATAGRAM_BYTES = 1232;
|
|
18
|
+
/**
|
|
19
|
+
* MESSAGE_BUNDLE framing: `[1B type=2]{[2B u16 LE len][full message]}...` in
|
|
20
|
+
* both directions. No count field, every member is a complete signed message,
|
|
21
|
+
* the wrapper carries no auth of its own, and bundles never nest. The server
|
|
22
|
+
* has always bundled notifications; Buddy v0.27.0+ accepts client bundles too
|
|
23
|
+
* ({@link packMessageBundle}, sent by the binary relay transport).
|
|
24
|
+
*/
|
|
25
|
+
export const BUNDLE_HEADER_BYTES = 1;
|
|
26
|
+
export const BUNDLE_LENGTH_PREFIX_BYTES = 2;
|
|
27
|
+
/** Cap on members per datagram, matching Buddy's reader and writer. */
|
|
28
|
+
export const RELAY_MAX_BUNDLE_MEMBERS = 32;
|
|
29
|
+
/** Largest single message that can travel inside a bundle at all. */
|
|
30
|
+
export const RELAY_MAX_BUNDLE_MEMBER_BYTES = RELAY_MAX_DATAGRAM_BYTES - BUNDLE_HEADER_BYTES - BUNDLE_LENGTH_PREFIX_BYTES; // 1229
|
|
31
|
+
/**
|
|
32
|
+
* Bytes a type-2 datagram carrying `members` would occupy (header included).
|
|
33
|
+
*/
|
|
34
|
+
export function bundleSizeOf(members) {
|
|
35
|
+
let size = BUNDLE_HEADER_BYTES;
|
|
36
|
+
for (const m of members)
|
|
37
|
+
size += BUNDLE_LENGTH_PREFIX_BYTES + m.length;
|
|
38
|
+
return size;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pack complete signed messages into one datagram. One member is returned
|
|
42
|
+
* unwrapped — the 3-byte wrapper buys nothing for a lone message, and the
|
|
43
|
+
* server does the same on the downlink. Two or more become a MESSAGE_BUNDLE.
|
|
44
|
+
*
|
|
45
|
+
* Throws on an empty list, a zero-length member, more than
|
|
46
|
+
* {@link RELAY_MAX_BUNDLE_MEMBERS} members, or a frame that would exceed
|
|
47
|
+
* {@link RELAY_MAX_DATAGRAM_BYTES}: callers decide what to flush before they
|
|
48
|
+
* get here (see `BinaryRelayTransport`).
|
|
49
|
+
*/
|
|
50
|
+
export function packMessageBundle(members) {
|
|
51
|
+
if (members.length === 0)
|
|
52
|
+
throw new Error('MESSAGE_BUNDLE needs at least one member');
|
|
53
|
+
if (members.length > RELAY_MAX_BUNDLE_MEMBERS) {
|
|
54
|
+
throw new Error(`MESSAGE_BUNDLE holds at most ${RELAY_MAX_BUNDLE_MEMBERS} members`);
|
|
55
|
+
}
|
|
56
|
+
for (const m of members) {
|
|
57
|
+
if (m.length === 0)
|
|
58
|
+
throw new Error('MESSAGE_BUNDLE member cannot be empty');
|
|
59
|
+
}
|
|
60
|
+
if (members.length === 1)
|
|
61
|
+
return members[0];
|
|
62
|
+
const size = bundleSizeOf(members);
|
|
63
|
+
if (size > RELAY_MAX_DATAGRAM_BYTES) {
|
|
64
|
+
throw new Error(`MESSAGE_BUNDLE of ${size} bytes exceeds ${RELAY_MAX_DATAGRAM_BYTES}`);
|
|
65
|
+
}
|
|
66
|
+
const out = new Uint8Array(size);
|
|
67
|
+
const view = new DataView(out.buffer);
|
|
68
|
+
out[0] = WireMessageType.MESSAGE_BUNDLE;
|
|
69
|
+
let off = BUNDLE_HEADER_BYTES;
|
|
70
|
+
for (const m of members) {
|
|
71
|
+
view.setUint16(off, m.length, true);
|
|
72
|
+
off += BUNDLE_LENGTH_PREFIX_BYTES;
|
|
73
|
+
out.set(m, off);
|
|
74
|
+
off += m.length;
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
18
78
|
/** Wire opcodes (mirror of game-api / Buddy `UdpMessageType`). */
|
|
19
79
|
export const WireMessageType = {
|
|
20
80
|
MESSAGE_BUNDLE: 2,
|
package/dist/default-origin.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GENERATED — do not edit. The operator tooling's
|
|
3
|
-
* `sync-client-origins.mjs --write --tier
|
|
3
|
+
* `sync-client-origins.mjs --write --tier dev` writes this file, and
|
|
4
4
|
* `check-sdk-default-origin.mjs` refuses it when it names the wrong tier or a
|
|
5
5
|
* host that declaration does not carry. Regenerate; never hand-edit.
|
|
6
6
|
*
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
* than no default at all. Every fallback this SDK ever removed named a host that
|
|
11
11
|
* was already dead. A generated file plus a gate is what makes this one different.
|
|
12
12
|
*
|
|
13
|
-
* Source: the operator's per-tier public CK API origin declaration, tier '
|
|
13
|
+
* Source: the operator's per-tier public CK API origin declaration, tier 'dev'
|
|
14
14
|
*/
|
|
15
15
|
/** The tier this build of the SDK is published for. */
|
|
16
|
-
export declare const CROWDY_DEFAULT_TIER = "
|
|
16
|
+
export declare const CROWDY_DEFAULT_TIER = "dev";
|
|
17
17
|
/** The public CK API origin for that tier. */
|
|
18
|
-
export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.
|
|
18
|
+
export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.dev.crowdedkingdoms.com";
|
|
19
19
|
/** The same host over WebSocket. A scheme is composed; a hostname is looked up. */
|
|
20
|
-
export declare const CROWDY_DEFAULT_WS_ORIGIN = "wss://ck.
|
|
20
|
+
export declare const CROWDY_DEFAULT_WS_ORIGIN = "wss://ck.dev.crowdedkingdoms.com";
|
|
21
21
|
/** The bare hostname, for callers that need to compare rather than dial. */
|
|
22
|
-
export declare const CROWDY_DEFAULT_HOST = "ck.
|
|
22
|
+
export declare const CROWDY_DEFAULT_HOST = "ck.dev.crowdedkingdoms.com";
|
|
23
23
|
//# sourceMappingURL=default-origin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-origin.d.ts","sourceRoot":"","sources":["../src/default-origin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"default-origin.d.ts","sourceRoot":"","sources":["../src/default-origin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,8CAA8C;AAC9C,eAAO,MAAM,0BAA0B,uCAAuC,CAAC;AAE/E,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,qCAAqC,CAAC;AAE3E,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,+BAA+B,CAAC"}
|
package/dist/default-origin.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GENERATED — do not edit. The operator tooling's
|
|
3
|
-
* `sync-client-origins.mjs --write --tier
|
|
3
|
+
* `sync-client-origins.mjs --write --tier dev` writes this file, and
|
|
4
4
|
* `check-sdk-default-origin.mjs` refuses it when it names the wrong tier or a
|
|
5
5
|
* host that declaration does not carry. Regenerate; never hand-edit.
|
|
6
6
|
*
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
* than no default at all. Every fallback this SDK ever removed named a host that
|
|
11
11
|
* was already dead. A generated file plus a gate is what makes this one different.
|
|
12
12
|
*
|
|
13
|
-
* Source: the operator's per-tier public CK API origin declaration, tier '
|
|
13
|
+
* Source: the operator's per-tier public CK API origin declaration, tier 'dev'
|
|
14
14
|
*/
|
|
15
15
|
/** The tier this build of the SDK is published for. */
|
|
16
|
-
export const CROWDY_DEFAULT_TIER = '
|
|
16
|
+
export const CROWDY_DEFAULT_TIER = 'dev';
|
|
17
17
|
/** The public CK API origin for that tier. */
|
|
18
|
-
export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.
|
|
18
|
+
export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.dev.crowdedkingdoms.com';
|
|
19
19
|
/** The same host over WebSocket. A scheme is composed; a hostname is looked up. */
|
|
20
|
-
export const CROWDY_DEFAULT_WS_ORIGIN = 'wss://ck.
|
|
20
|
+
export const CROWDY_DEFAULT_WS_ORIGIN = 'wss://ck.dev.crowdedkingdoms.com';
|
|
21
21
|
/** The bare hostname, for callers that need to compare rather than dial. */
|
|
22
|
-
export const CROWDY_DEFAULT_HOST = 'ck.
|
|
22
|
+
export const CROWDY_DEFAULT_HOST = 'ck.dev.crowdedkingdoms.com';
|
package/dist/domains/udp.d.ts
CHANGED
|
@@ -96,6 +96,13 @@ export declare class UdpAPI {
|
|
|
96
96
|
* @returns `true` once the session has been closed.
|
|
97
97
|
* @throws {CrowdyGraphQLError} on auth failures.
|
|
98
98
|
*/
|
|
99
|
+
/**
|
|
100
|
+
* Binary relay only: put the pending `MESSAGE_BUNDLE` on the wire now
|
|
101
|
+
* instead of at the end of `realtime.bundleWindowMs`. Call it at the end of a
|
|
102
|
+
* frame whose sends should not wait. No-op on the GraphQL transport, when
|
|
103
|
+
* `realtime.bundleSends` is false, or when nothing is pending.
|
|
104
|
+
*/
|
|
105
|
+
flushSends(): void;
|
|
99
106
|
disconnect(): Promise<boolean>;
|
|
100
107
|
/**
|
|
101
108
|
* Read the current UDP proxy session status **without** opening one. With no
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"udp.d.ts","sourceRoot":"","sources":["../../src/domains/udp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,KAAK,uBAAuB,EAG5B,KAAK,6BAA6B,EAElC,KAAK,gCAAgC,EAErC,KAAK,gCAAgC,EAErC,KAAK,gCAAgC,EAErC,KAAK,gCAAgC,EAErC,KAAK,+BAA+B,EAEpC,KAAK,gCAAgC,EAErC,KAAK,uCAAuC,EAE5C,KAAK,mCAAmC,EACzC,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAa1D,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,MAAM;IAKf,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO,CAAC;IAChB;;;;OAIG;IACH,OAAO,CAAC,2BAA2B,CAAC;IAZtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAG1D,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,mBAAmB,EACzB,OAAO,CAAC,EAAE,eAAe,YAAA;IACjC;;;;OAIG;IACK,2BAA2B,CAAC,GAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,aAAA;IAGjF;;;;OAIG;IACG,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;YAKpC,uBAAuB;IAWrC,OAAO,CAAC,gBAAgB;IAOxB,mEAAmE;IACnE,OAAO,CAAC,MAAM;IAId;;;;OAIG;YACW,YAAY;IAoB1B;;;;;;;;;;;;;OAaG;IACG,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAkBpE;;;;;;;;OAQG;
|
|
1
|
+
{"version":3,"file":"udp.d.ts","sourceRoot":"","sources":["../../src/domains/udp.ts"],"names":[],"mappings":"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"}
|
package/dist/domains/udp.js
CHANGED
|
@@ -149,6 +149,15 @@ export class UdpAPI {
|
|
|
149
149
|
* @returns `true` once the session has been closed.
|
|
150
150
|
* @throws {CrowdyGraphQLError} on auth failures.
|
|
151
151
|
*/
|
|
152
|
+
/**
|
|
153
|
+
* Binary relay only: put the pending `MESSAGE_BUNDLE` on the wire now
|
|
154
|
+
* instead of at the end of `realtime.bundleWindowMs`. Call it at the end of a
|
|
155
|
+
* frame whose sends should not wait. No-op on the GraphQL transport, when
|
|
156
|
+
* `realtime.bundleSends` is false, or when nothing is pending.
|
|
157
|
+
*/
|
|
158
|
+
flushSends() {
|
|
159
|
+
this.subs.flushSends();
|
|
160
|
+
}
|
|
152
161
|
async disconnect() {
|
|
153
162
|
if (this.subs.usingBinaryTransport()) {
|
|
154
163
|
this.subs.disconnect();
|
|
@@ -278,6 +287,9 @@ export class UdpAPI {
|
|
|
278
287
|
const request = this.withSequence(input);
|
|
279
288
|
const wait = this.subs.waitForSequence(request.sequenceNumber, options.timeoutMs);
|
|
280
289
|
await this.sendActorUpdate(request);
|
|
290
|
+
// Nothing can be echoed that has not left: the bundled relay path holds a
|
|
291
|
+
// send for up to bundleWindowMs, so put it on the wire before waiting.
|
|
292
|
+
this.subs.flushSends();
|
|
281
293
|
return wait;
|
|
282
294
|
}
|
|
283
295
|
/**
|
|
@@ -345,6 +357,9 @@ export class UdpAPI {
|
|
|
345
357
|
const request = this.withSequence(input);
|
|
346
358
|
const wait = this.subs.waitForSequence(request.sequenceNumber, options.timeoutMs);
|
|
347
359
|
await this.sendVoxelUpdate(request);
|
|
360
|
+
// Nothing can be echoed that has not left: the bundled relay path holds a
|
|
361
|
+
// send for up to bundleWindowMs, so put it on the wire before waiting.
|
|
362
|
+
this.subs.flushSends();
|
|
348
363
|
return wait;
|
|
349
364
|
}
|
|
350
365
|
/**
|
|
@@ -403,6 +418,9 @@ export class UdpAPI {
|
|
|
403
418
|
const request = this.withSequence(input);
|
|
404
419
|
const wait = this.subs.waitForSequence(request.sequenceNumber, options.timeoutMs);
|
|
405
420
|
await this.sendAudioPacket(request);
|
|
421
|
+
// Nothing can be echoed that has not left: the bundled relay path holds a
|
|
422
|
+
// send for up to bundleWindowMs, so put it on the wire before waiting.
|
|
423
|
+
this.subs.flushSends();
|
|
406
424
|
return wait;
|
|
407
425
|
}
|
|
408
426
|
/**
|
|
@@ -514,6 +532,9 @@ export class UdpAPI {
|
|
|
514
532
|
const request = this.withSequence(input);
|
|
515
533
|
const wait = this.subs.waitForSequence(request.sequenceNumber, options.timeoutMs);
|
|
516
534
|
await this.sendTextPacket(request);
|
|
535
|
+
// Nothing can be echoed that has not left: the bundled relay path holds a
|
|
536
|
+
// send for up to bundleWindowMs, so put it on the wire before waiting.
|
|
537
|
+
this.subs.flushSends();
|
|
517
538
|
return wait;
|
|
518
539
|
}
|
|
519
540
|
/**
|
|
@@ -574,6 +595,9 @@ export class UdpAPI {
|
|
|
574
595
|
const request = this.withSequence(input);
|
|
575
596
|
const wait = this.subs.waitForSequence(request.sequenceNumber, options.timeoutMs);
|
|
576
597
|
await this.sendClientEvent(request);
|
|
598
|
+
// Nothing can be echoed that has not left: the bundled relay path holds a
|
|
599
|
+
// send for up to bundleWindowMs, so put it on the wire before waiting.
|
|
600
|
+
this.subs.flushSends();
|
|
577
601
|
return wait;
|
|
578
602
|
}
|
|
579
603
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -47,15 +47,15 @@
|
|
|
47
47
|
* or internal tooling, never an untrusted browser.
|
|
48
48
|
*/
|
|
49
49
|
/** The published package version. Mirrors `package.json`. */
|
|
50
|
-
export declare const VERSION = "17.0
|
|
50
|
+
export declare const VERSION = "17.1.0-dev.1";
|
|
51
51
|
export { LbCookieStore } from './lb-cookie-store.js';
|
|
52
52
|
export { CrowdyClient, createCrowdyClient, type CrowdyClientConfig, } from './crowdy-client.js';
|
|
53
53
|
export { CROWDY_DEFAULT_TIER, CROWDY_DEFAULT_HOST, CROWDY_DEFAULT_HTTP_ORIGIN, CROWDY_DEFAULT_WS_ORIGIN, } from './default-origin.js';
|
|
54
54
|
export { BrowserLocalStorageTokenStore, SessionStore, type SessionListener, type TokenStore, } from './session.js';
|
|
55
55
|
export { GraphQLClient, GraphQLTransport, type GraphQLClientConfig, } from './client.js';
|
|
56
56
|
export { RealtimeClient, type RealtimeConfig, type RealtimeStatus, type SpatialNotification, type UdpNotification, type UdpNotificationHandlers, } from './realtime.js';
|
|
57
|
-
export { BinaryRelayTransport, RELAY_SUBPROTOCOL, type BinaryRelayCallbacks, type BinaryRelayConfig, } from './binary-relay.js';
|
|
58
|
-
export { RELAY_MAX_DATAGRAM_BYTES, WireMessageType, createSignContext, parseRelayFrame, serializeActorUpdate, serializeAudioPacket, serializeVideoPacket, serializeChannelMessage, serializeClientEvent, serializeSingleActorMessage, serializeTextPacket, serializeVoxelUpdate, type RelaySignContext, } from './binary-wire.js';
|
|
57
|
+
export { BinaryRelayTransport, RELAY_SUBPROTOCOL, type BinaryRelayCallbacks, type BinaryRelayConfig, type BinaryRelaySendStats, } from './binary-relay.js';
|
|
58
|
+
export { BUNDLE_HEADER_BYTES, BUNDLE_LENGTH_PREFIX_BYTES, RELAY_MAX_BUNDLE_MEMBERS, RELAY_MAX_BUNDLE_MEMBER_BYTES, RELAY_MAX_DATAGRAM_BYTES, WireMessageType, bundleSizeOf, createSignContext, packMessageBundle, parseRelayFrame, serializeActorUpdate, serializeAudioPacket, serializeVideoPacket, serializeChannelMessage, serializeClientEvent, serializeSingleActorMessage, serializeTextPacket, serializeVoxelUpdate, type RelaySignContext, } from './binary-wire.js';
|
|
59
59
|
export { VIDEO_FRAGMENT_HEADER_BYTES, MAX_VIDEO_FRAGMENT_BODY_BYTES, MAX_VIDEO_FRAGMENTS, VIDEO_FRAME_TIMEOUT_MS, VIDEO_FRAGMENT_VERSION, VideoCodec, fragmentFrame, parseVideoFragmentHeader, isNewerFrameId, VideoFrameAssembler, type VideoFragmentHeader, type AssembledVideoFrame, } from './media/video-frames.js';
|
|
60
60
|
export { RealtimeMetrics, payloadBytesOf, type RealtimeMetricsCounters, type RealtimeMetricsKind, type RealtimeMetricsSnapshot, } from './metrics.js';
|
|
61
61
|
export { WorldClient, ActorClient, type ActorOptions } from './world.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* or internal tooling, never an untrusted browser.
|
|
48
48
|
*/
|
|
49
49
|
/** The published package version. Mirrors `package.json`. */
|
|
50
|
-
export const VERSION = '17.0
|
|
50
|
+
export const VERSION = '17.1.0-dev.1';
|
|
51
51
|
export { LbCookieStore } from './lb-cookie-store.js';
|
|
52
52
|
export { CrowdyClient, createCrowdyClient, } from './crowdy-client.js';
|
|
53
53
|
// The tier this build defaults to, exported so a consumer can PRINT what it is
|
|
@@ -59,7 +59,7 @@ export { BrowserLocalStorageTokenStore, SessionStore, } from './session.js';
|
|
|
59
59
|
export { GraphQLClient, GraphQLTransport, } from './client.js';
|
|
60
60
|
export { RealtimeClient, } from './realtime.js';
|
|
61
61
|
export { BinaryRelayTransport, RELAY_SUBPROTOCOL, } from './binary-relay.js';
|
|
62
|
-
export { RELAY_MAX_DATAGRAM_BYTES, WireMessageType, createSignContext, parseRelayFrame, serializeActorUpdate, serializeAudioPacket, serializeVideoPacket, serializeChannelMessage, serializeClientEvent, serializeSingleActorMessage, serializeTextPacket, serializeVoxelUpdate, } from './binary-wire.js';
|
|
62
|
+
export { BUNDLE_HEADER_BYTES, BUNDLE_LENGTH_PREFIX_BYTES, RELAY_MAX_BUNDLE_MEMBERS, RELAY_MAX_BUNDLE_MEMBER_BYTES, RELAY_MAX_DATAGRAM_BYTES, WireMessageType, bundleSizeOf, createSignContext, packMessageBundle, parseRelayFrame, serializeActorUpdate, serializeAudioPacket, serializeVideoPacket, serializeChannelMessage, serializeClientEvent, serializeSingleActorMessage, serializeTextPacket, serializeVoxelUpdate, } from './binary-wire.js';
|
|
63
63
|
export { VIDEO_FRAGMENT_HEADER_BYTES, MAX_VIDEO_FRAGMENT_BODY_BYTES, MAX_VIDEO_FRAGMENTS, VIDEO_FRAME_TIMEOUT_MS, VIDEO_FRAGMENT_VERSION, VideoCodec, fragmentFrame, parseVideoFragmentHeader, isNewerFrameId, VideoFrameAssembler, } from './media/video-frames.js';
|
|
64
64
|
export { RealtimeMetrics, payloadBytesOf, } from './metrics.js';
|
|
65
65
|
export { WorldClient, ActorClient } from './world.js';
|
package/dist/realtime.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { CrowdyRealtimeError } from './errors.js';
|
|
|
5
5
|
import type { LbCookieStore } from './lb-cookie-store.js';
|
|
6
6
|
import type { RealtimeMetrics } from './metrics.js';
|
|
7
7
|
import { type UdpNotificationsSubscription } from './generated/graphql.js';
|
|
8
|
+
import { type BinaryRelaySendStats } from './binary-relay.js';
|
|
8
9
|
import type { RelaySignContext } from './binary-wire.js';
|
|
9
10
|
/**
|
|
10
11
|
* Lifecycle state of the realtime WebSocket connection, as reported by
|
|
@@ -282,6 +283,25 @@ export interface RealtimeConfig {
|
|
|
282
283
|
* `wsUrl` with its path replaced by `/realtime` (the game-api default).
|
|
283
284
|
*/
|
|
284
285
|
binaryRelayUrl?: string;
|
|
286
|
+
/**
|
|
287
|
+
* Binary relay only: pack the messages sent within {@link bundleWindowMs}
|
|
288
|
+
* into one `MESSAGE_BUNDLE` datagram, the framing the server has always used
|
|
289
|
+
* on the downlink and that Buddy v0.27.0+ accepts on the uplink. A lone
|
|
290
|
+
* message goes out unwrapped, so a client sending one message per window
|
|
291
|
+
* puts the same bytes on the wire as before. Flushed early when the next
|
|
292
|
+
* message would not fit (1232 bytes), by {@link RealtimeClient.flushSends},
|
|
293
|
+
* after every `...AndWait` send, and on disconnect. Defaults to `true`;
|
|
294
|
+
* `false` is one datagram per message (CrowdyJS <= 17.0). The GraphQL
|
|
295
|
+
* transport is unaffected: the proxy signs one message per mutation.
|
|
296
|
+
*/
|
|
297
|
+
bundleSends?: boolean;
|
|
298
|
+
/**
|
|
299
|
+
* How long a pending bundle waits for more messages before it is flushed, in
|
|
300
|
+
* **milliseconds**. Defaults to `1`. `0` flushes on the next macrotask, so
|
|
301
|
+
* sends made in one synchronous burst still share a datagram. Ignored when
|
|
302
|
+
* {@link bundleSends} is false.
|
|
303
|
+
*/
|
|
304
|
+
bundleWindowMs?: number;
|
|
285
305
|
}
|
|
286
306
|
/**
|
|
287
307
|
* Manages the single WebSocket subscription to the game-api's
|
|
@@ -321,6 +341,8 @@ export declare class RealtimeClient {
|
|
|
321
341
|
private readonly lbCookieStore?;
|
|
322
342
|
private readonly wsUplinkMutations;
|
|
323
343
|
private readonly binaryTransport;
|
|
344
|
+
private readonly bundleSends;
|
|
345
|
+
private readonly bundleWindowMs;
|
|
324
346
|
/** Mutable alongside wsUrl: re-discovery moves both. */
|
|
325
347
|
private binaryRelayUrl;
|
|
326
348
|
private binaryRelay;
|
|
@@ -437,6 +459,19 @@ export declare class RealtimeClient {
|
|
|
437
459
|
binarySendReady(): boolean;
|
|
438
460
|
/** Whether this client is configured (and still eligible) to use the relay. */
|
|
439
461
|
usingBinaryTransport(): boolean;
|
|
462
|
+
/**
|
|
463
|
+
* Put the binary relay's pending `MESSAGE_BUNDLE` on the wire now instead of
|
|
464
|
+
* at the end of {@link RealtimeConfig.bundleWindowMs}. Call it at the end of
|
|
465
|
+
* a frame when that frame's sends should not wait. No-op on the GraphQL
|
|
466
|
+
* transport or when nothing is pending.
|
|
467
|
+
*/
|
|
468
|
+
flushSends(): void;
|
|
469
|
+
/**
|
|
470
|
+
* Uplink counters of the binary relay (messages, frames, bundles, bytes,
|
|
471
|
+
* drops), or `null` when the relay has not been created. These are a local
|
|
472
|
+
* diagnostic, not a bill.
|
|
473
|
+
*/
|
|
474
|
+
binaryRelayStats(): BinaryRelaySendStats | null;
|
|
440
475
|
/**
|
|
441
476
|
* Serialize (with the session signing context) and send one datagram over
|
|
442
477
|
* the binary relay. Throws `BINARY_RELAY_UNAVAILABLE` when the relay is not
|
package/dist/realtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
|
package/dist/realtime.js
CHANGED
|
@@ -5,7 +5,7 @@ import { CrowdyRealtimeError } from './errors.js';
|
|
|
5
5
|
import { moveFromErrors } from './datacenter-redirect.js';
|
|
6
6
|
import { payloadBytesOf } from './metrics.js';
|
|
7
7
|
import { UdpNotificationsDocument, } from './generated/graphql.js';
|
|
8
|
-
import { BinaryRelayTransport } from './binary-relay.js';
|
|
8
|
+
import { BinaryRelayTransport, } from './binary-relay.js';
|
|
9
9
|
import { CROWDY_DEFAULT_WS_ORIGIN } from './default-origin.js';
|
|
10
10
|
/**
|
|
11
11
|
* Manages the single WebSocket subscription to the game-api's
|
|
@@ -75,6 +75,8 @@ export class RealtimeClient {
|
|
|
75
75
|
this.lbCookieStore = config.lbCookieStore;
|
|
76
76
|
this.wsUplinkMutations = config.wsUplinkMutations === true;
|
|
77
77
|
this.binaryTransport = config.binaryTransport === true;
|
|
78
|
+
this.bundleSends = config.bundleSends ?? true;
|
|
79
|
+
this.bundleWindowMs = config.bundleWindowMs ?? 1;
|
|
78
80
|
this.binaryRelayUrl =
|
|
79
81
|
config.binaryRelayUrl ?? deriveBinaryRelayUrl(this.wsUrl);
|
|
80
82
|
this.session.onChange((token) => {
|
|
@@ -303,6 +305,23 @@ export class RealtimeClient {
|
|
|
303
305
|
usingBinaryTransport() {
|
|
304
306
|
return this.binaryTransport && !this.binaryUnavailable;
|
|
305
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Put the binary relay's pending `MESSAGE_BUNDLE` on the wire now instead of
|
|
310
|
+
* at the end of {@link RealtimeConfig.bundleWindowMs}. Call it at the end of
|
|
311
|
+
* a frame when that frame's sends should not wait. No-op on the GraphQL
|
|
312
|
+
* transport or when nothing is pending.
|
|
313
|
+
*/
|
|
314
|
+
flushSends() {
|
|
315
|
+
this.binaryRelay?.flushSends();
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Uplink counters of the binary relay (messages, frames, bundles, bytes,
|
|
319
|
+
* drops), or `null` when the relay has not been created. These are a local
|
|
320
|
+
* diagnostic, not a bill.
|
|
321
|
+
*/
|
|
322
|
+
binaryRelayStats() {
|
|
323
|
+
return this.binaryRelay?.stats() ?? null;
|
|
324
|
+
}
|
|
306
325
|
/**
|
|
307
326
|
* Serialize (with the session signing context) and send one datagram over
|
|
308
327
|
* the binary relay. Throws `BINARY_RELAY_UNAVAILABLE` when the relay is not
|
|
@@ -534,6 +553,8 @@ export class RealtimeClient {
|
|
|
534
553
|
retryInitialDelayMs: this.retryInitialDelayMs,
|
|
535
554
|
retryMaxDelayMs: this.retryMaxDelayMs,
|
|
536
555
|
logger: this.logger,
|
|
556
|
+
bundleSends: this.bundleSends,
|
|
557
|
+
bundleWindowMs: this.bundleWindowMs,
|
|
537
558
|
}, {
|
|
538
559
|
getToken: () => this.session.getToken(),
|
|
539
560
|
onNotification: (notification) => this.dispatch(notification),
|
package/package.json
CHANGED