@magicworks/client-party-game 0.1.0-rc.4 → 0.1.0-rc.6
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 +18 -3
- package/dist/client.d.ts +37 -39
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +160 -183
- package/dist/client.js.map +1 -1
- package/dist/connection.d.ts +158 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +375 -0
- package/dist/connection.js.map +1 -0
- package/dist/protocol/codes.d.ts +29 -0
- package/dist/protocol/codes.d.ts.map +1 -0
- package/dist/protocol/codes.js +56 -0
- package/dist/protocol/codes.js.map +1 -0
- package/dist/protocol/events.d.ts +129 -0
- package/dist/protocol/events.d.ts.map +1 -0
- package/dist/protocol/events.js +131 -0
- package/dist/protocol/events.js.map +1 -0
- package/dist/protocol/index.d.ts +25 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +41 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/protocol/limits.d.ts +40 -0
- package/dist/protocol/limits.d.ts.map +1 -0
- package/dist/protocol/limits.js +43 -0
- package/dist/protocol/limits.js.map +1 -0
- package/dist/protocol/messages.d.ts +294 -0
- package/dist/protocol/messages.d.ts.map +1 -0
- package/dist/protocol/messages.js +3 -0
- package/dist/protocol/messages.js.map +1 -0
- package/dist/protocol/placement.d.ts +63 -0
- package/dist/protocol/placement.d.ts.map +1 -0
- package/dist/protocol/placement.js +82 -0
- package/dist/protocol/placement.js.map +1 -0
- package/dist/protocol/routing.d.ts +26 -0
- package/dist/protocol/routing.d.ts.map +1 -0
- package/dist/protocol/routing.js +19 -0
- package/dist/protocol/routing.js.map +1 -0
- package/dist/protocol/scoring.d.ts +7 -0
- package/dist/protocol/scoring.d.ts.map +1 -0
- package/dist/protocol/scoring.js +13 -0
- package/dist/protocol/scoring.js.map +1 -0
- package/dist/protocol/speedtest.d.ts +9 -0
- package/dist/protocol/speedtest.d.ts.map +1 -0
- package/dist/protocol/speedtest.js +22 -0
- package/dist/protocol/speedtest.js.map +1 -0
- package/dist/socket.d.ts +4 -2
- package/dist/socket.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/protocol.d.ts +0 -509
- package/dist/protocol.d.ts.map +0 -1
- package/dist/protocol.js +0 -262
- package/dist/protocol.js.map +0 -1
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { type PartyFetch } from './protocol';
|
|
2
|
+
import type { PartySocket, PartySocketFactory } from './socket';
|
|
3
|
+
export interface PartyLogger {
|
|
4
|
+
debug(...args: unknown[]): void;
|
|
5
|
+
warn(...args: unknown[]): void;
|
|
6
|
+
}
|
|
7
|
+
/** A placement a server answered, but refused: see PartyConnection.place. */
|
|
8
|
+
export declare const refused: unique symbol;
|
|
9
|
+
/** Servers a client tries before giving up: on their way out, or not answering. */
|
|
10
|
+
export declare const maxDrainingRetries = 3;
|
|
11
|
+
export declare function withTimeout<T>(promise: Promise<T>, ms: number, what: string): Promise<T>;
|
|
12
|
+
/** URLs without trailing slashes. No Object.fromEntries: the app supports Chrome 56, which lacks it, and has no polyfill. */
|
|
13
|
+
export declare function tidyUrls(urls: Record<string, string>): Record<string, string>;
|
|
14
|
+
export interface PartyConnectionOptions {
|
|
15
|
+
/** The party servers' global name: see PartyGameClientOptions. */
|
|
16
|
+
url: string;
|
|
17
|
+
regionUrls: Record<string, string>;
|
|
18
|
+
io: PartySocketFactory;
|
|
19
|
+
fetch: PartyFetch;
|
|
20
|
+
logger: PartyLogger;
|
|
21
|
+
ackTimeoutMs: number;
|
|
22
|
+
/** How long a placement request has: see PartyGameClientOptions. */
|
|
23
|
+
placementTimeoutMs: number;
|
|
24
|
+
/** When a room's server is tried again after it is lost: see PartyGameClientOptions. */
|
|
25
|
+
roomRetryMs: readonly number[];
|
|
26
|
+
}
|
|
27
|
+
/** What the connection asks of the client it connects for. */
|
|
28
|
+
export interface PartyConnectionHooks {
|
|
29
|
+
/** The code of the room to connect for again after a connection is lost, if any. */
|
|
30
|
+
roomCode(): string | null;
|
|
31
|
+
/** A socket has been opened: listen for the room's messages on it. */
|
|
32
|
+
opened(socket: PartySocket): void;
|
|
33
|
+
/**
|
|
34
|
+
* The socket has connected, to the server `prefix` is: re-attach it to the
|
|
35
|
+
* room, then say so with `attachedTo`, or connect elsewhere.
|
|
36
|
+
*/
|
|
37
|
+
connected(socket: PartySocket, prefix: string): void;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The TV's connection to the party servers. Rooms live in the memory of one
|
|
41
|
+
* server of several, and the load balancer routes by server prefix
|
|
42
|
+
* (ROUTING_QUERY_KEY). Before every socket the connection asks over HTTP
|
|
43
|
+
* where to connect (PLACEMENT_PATH) - for the room's code, or for a new room
|
|
44
|
+
* - and routes the socket by the prefix of the server that answered, so long
|
|
45
|
+
* polling's many requests all reach it. A connection lost is placed again
|
|
46
|
+
* the same way, with backoff, rather than left to socket.io to reconnect to
|
|
47
|
+
* a server that may be gone.
|
|
48
|
+
*
|
|
49
|
+
* Host calls wait until the connection is attached to the room (see
|
|
50
|
+
* whenAttached): sent while a reconnect is still re-attaching, they would
|
|
51
|
+
* reach the server from a socket it does not know the room of.
|
|
52
|
+
*/
|
|
53
|
+
export declare class PartyConnection {
|
|
54
|
+
private readonly hooks;
|
|
55
|
+
private readonly url;
|
|
56
|
+
/** Built in at first, then as the servers say: see PartyRouting. */
|
|
57
|
+
private regionUrls;
|
|
58
|
+
private readonly io;
|
|
59
|
+
private readonly fetch;
|
|
60
|
+
private readonly logger;
|
|
61
|
+
private readonly ackTimeoutMs;
|
|
62
|
+
private readonly placementTimeoutMs;
|
|
63
|
+
private readonly roomRetryMs;
|
|
64
|
+
private socket;
|
|
65
|
+
/**
|
|
66
|
+
* The server prefix the current connection is routed by, or is being
|
|
67
|
+
* connected for: null for any server.
|
|
68
|
+
*/
|
|
69
|
+
private routedPrefix;
|
|
70
|
+
/** Whether a connection is being placed, with no socket yet. */
|
|
71
|
+
private connecting;
|
|
72
|
+
/** Bumped by every new connection, and by close: older ones stop. */
|
|
73
|
+
private generation;
|
|
74
|
+
/** Since when the room's server has been out of reach, if it is. */
|
|
75
|
+
private lostSince;
|
|
76
|
+
/** Tries of the room's server since it was lost: slots of roomRetryMs taken. */
|
|
77
|
+
private roomTries;
|
|
78
|
+
/** Whether the room's server, since it was lost, answered placement but its socket failed. */
|
|
79
|
+
private roomSocketFailed;
|
|
80
|
+
/** Tries since the connection was last attached, for the backoff. */
|
|
81
|
+
private retries;
|
|
82
|
+
/** Whether the current connection is attached to the room. */
|
|
83
|
+
private attached;
|
|
84
|
+
private attachedWaiters;
|
|
85
|
+
constructor(options: PartyConnectionOptions, hooks: PartyConnectionHooks);
|
|
86
|
+
/** The current socket, if there is one. */
|
|
87
|
+
current(): PartySocket | null;
|
|
88
|
+
isConnected(): boolean;
|
|
89
|
+
/** Each region's own URL, as a server has said: see PartyRouting. */
|
|
90
|
+
setRegionUrls(urls: Record<string, string>): void;
|
|
91
|
+
/**
|
|
92
|
+
* Connects for `code`'s room, or for a new room with null, in place of
|
|
93
|
+
* whatever connection there is: asks where (see place) and opens a socket
|
|
94
|
+
* there. Host calls wait until it is attached. `avoid` are servers this
|
|
95
|
+
* connection must not go to, having just failed; `delay` holds the first
|
|
96
|
+
* try back, for a connection that has only just dropped.
|
|
97
|
+
*/
|
|
98
|
+
connectFor(code: string | null, { avoid, delay }?: {
|
|
99
|
+
avoid?: string[] | undefined;
|
|
100
|
+
delay?: boolean | undefined;
|
|
101
|
+
}): void;
|
|
102
|
+
/** Whether the connection there is, or is being made, will do for `code`'s room. */
|
|
103
|
+
connectedFor(code: string | null): boolean;
|
|
104
|
+
/** Whether the connection is routed to the server `code`'s room is on. */
|
|
105
|
+
routesTo(code: string): boolean;
|
|
106
|
+
/** A connection for the room the client is in, if there is none. */
|
|
107
|
+
ensure(): void;
|
|
108
|
+
/** The server the current connection is routed to, as a list to avoid. */
|
|
109
|
+
avoidingRouted(): string[];
|
|
110
|
+
setAttached(attached: boolean): void;
|
|
111
|
+
isAttached(): boolean;
|
|
112
|
+
/** Attached: the connection is the room's, and stays so until it drops. */
|
|
113
|
+
attachedTo(socket: PartySocket): void;
|
|
114
|
+
whenAttached(what: string): Promise<void>;
|
|
115
|
+
/** Resolves once `socket` connects, in the time an answer is waited for. */
|
|
116
|
+
whenConnected(socket: PartySocket, what: string): Promise<void>;
|
|
117
|
+
send<T>(socket: PartySocket, event: string, payload?: unknown): Promise<T>;
|
|
118
|
+
/** Where `code`'s room is: its region's servers, or for no room the nearest. */
|
|
119
|
+
urlFor(code: string | null): string;
|
|
120
|
+
/**
|
|
121
|
+
* Asks the servers at `serverUrl` where to connect (see PLACEMENT_PATH):
|
|
122
|
+
* the prefix to route the socket by and the URL to open it at, `refused`
|
|
123
|
+
* when a server answered but will not take it, or null when none answered.
|
|
124
|
+
*/
|
|
125
|
+
place(serverUrl: string, code: string | null, avoid: string[]): Promise<{
|
|
126
|
+
prefix: string;
|
|
127
|
+
url: string;
|
|
128
|
+
} | typeof refused | null>;
|
|
129
|
+
/** A socket routed by `prefix`, the server placement handed out, at `url`. */
|
|
130
|
+
connectTo(prefix: string, url: string): PartySocket;
|
|
131
|
+
/** Lets go of the connection for good: whatever it was doing stops. */
|
|
132
|
+
close(): void;
|
|
133
|
+
/** A server was reached: the room's server is not out of reach, or no longer. */
|
|
134
|
+
private found;
|
|
135
|
+
private dropSocket;
|
|
136
|
+
private placeAndOpen;
|
|
137
|
+
/**
|
|
138
|
+
* How long to wait before the next try. A room's server is tried at the
|
|
139
|
+
* times `roomRetryMs` gives, counted from when it was lost, give or take a
|
|
140
|
+
* tenth so that a server's TVs do not all ask at the same moment - each try
|
|
141
|
+
* taking the next of them, whether its placement or its socket fails. A try
|
|
142
|
+
* due already, the last having taken that long, goes straight away.
|
|
143
|
+
* Anything else - no room, or a room's server tried that many times - backs
|
|
144
|
+
* off as socket.io would.
|
|
145
|
+
*/
|
|
146
|
+
private nextDelay;
|
|
147
|
+
private placeFor;
|
|
148
|
+
/** The servers of `code`'s region, if the connection knows where they are. */
|
|
149
|
+
private regionUrlFor;
|
|
150
|
+
/**
|
|
151
|
+
* After a connection is lost, or never made: the room's own server is
|
|
152
|
+
* asked for again, until it is given up on (see placeFor). With no room,
|
|
153
|
+
* any server but the one that failed.
|
|
154
|
+
*/
|
|
155
|
+
private reconnect;
|
|
156
|
+
private openSocket;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PartyConnection = exports.maxDrainingRetries = exports.refused = void 0;
|
|
4
|
+
exports.withTimeout = withTimeout;
|
|
5
|
+
exports.tidyUrls = tidyUrls;
|
|
6
|
+
const protocol_1 = require("./protocol");
|
|
7
|
+
/** A placement a server answered, but refused: see PartyConnection.place. */
|
|
8
|
+
exports.refused = Symbol('refused');
|
|
9
|
+
/** Servers a client tries before giving up: on their way out, or not answering. */
|
|
10
|
+
exports.maxDrainingRetries = 3;
|
|
11
|
+
function withTimeout(promise, ms, what) {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const timer = setTimeout(() => reject(new Error(`party server did not answer ${what} in ${ms}ms`)), ms);
|
|
14
|
+
promise.then(value => {
|
|
15
|
+
clearTimeout(timer);
|
|
16
|
+
resolve(value);
|
|
17
|
+
}, error => {
|
|
18
|
+
clearTimeout(timer);
|
|
19
|
+
reject(error);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/** URLs without trailing slashes. No Object.fromEntries: the app supports Chrome 56, which lacks it, and has no polyfill. */
|
|
24
|
+
function tidyUrls(urls) {
|
|
25
|
+
const tidy = {};
|
|
26
|
+
for (const key of Object.keys(urls)) {
|
|
27
|
+
tidy[key] = urls[key].replace(/\/+$/, '');
|
|
28
|
+
}
|
|
29
|
+
return tidy;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The TV's connection to the party servers. Rooms live in the memory of one
|
|
33
|
+
* server of several, and the load balancer routes by server prefix
|
|
34
|
+
* (ROUTING_QUERY_KEY). Before every socket the connection asks over HTTP
|
|
35
|
+
* where to connect (PLACEMENT_PATH) - for the room's code, or for a new room
|
|
36
|
+
* - and routes the socket by the prefix of the server that answered, so long
|
|
37
|
+
* polling's many requests all reach it. A connection lost is placed again
|
|
38
|
+
* the same way, with backoff, rather than left to socket.io to reconnect to
|
|
39
|
+
* a server that may be gone.
|
|
40
|
+
*
|
|
41
|
+
* Host calls wait until the connection is attached to the room (see
|
|
42
|
+
* whenAttached): sent while a reconnect is still re-attaching, they would
|
|
43
|
+
* reach the server from a socket it does not know the room of.
|
|
44
|
+
*/
|
|
45
|
+
class PartyConnection {
|
|
46
|
+
hooks;
|
|
47
|
+
url;
|
|
48
|
+
/** Built in at first, then as the servers say: see PartyRouting. */
|
|
49
|
+
regionUrls;
|
|
50
|
+
io;
|
|
51
|
+
fetch;
|
|
52
|
+
logger;
|
|
53
|
+
ackTimeoutMs;
|
|
54
|
+
placementTimeoutMs;
|
|
55
|
+
roomRetryMs;
|
|
56
|
+
socket = null;
|
|
57
|
+
/**
|
|
58
|
+
* The server prefix the current connection is routed by, or is being
|
|
59
|
+
* connected for: null for any server.
|
|
60
|
+
*/
|
|
61
|
+
routedPrefix = null;
|
|
62
|
+
/** Whether a connection is being placed, with no socket yet. */
|
|
63
|
+
connecting = false;
|
|
64
|
+
/** Bumped by every new connection, and by close: older ones stop. */
|
|
65
|
+
generation = 0;
|
|
66
|
+
/** Since when the room's server has been out of reach, if it is. */
|
|
67
|
+
lostSince = null;
|
|
68
|
+
/** Tries of the room's server since it was lost: slots of roomRetryMs taken. */
|
|
69
|
+
roomTries = 0;
|
|
70
|
+
/** Whether the room's server, since it was lost, answered placement but its socket failed. */
|
|
71
|
+
roomSocketFailed = false;
|
|
72
|
+
/** Tries since the connection was last attached, for the backoff. */
|
|
73
|
+
retries = 0;
|
|
74
|
+
/** Whether the current connection is attached to the room. */
|
|
75
|
+
attached = true;
|
|
76
|
+
attachedWaiters = [];
|
|
77
|
+
constructor(options, hooks) {
|
|
78
|
+
this.hooks = hooks;
|
|
79
|
+
this.url = options.url;
|
|
80
|
+
this.regionUrls = tidyUrls(options.regionUrls);
|
|
81
|
+
this.io = options.io;
|
|
82
|
+
this.fetch = options.fetch;
|
|
83
|
+
this.logger = options.logger;
|
|
84
|
+
this.ackTimeoutMs = options.ackTimeoutMs;
|
|
85
|
+
this.placementTimeoutMs = options.placementTimeoutMs;
|
|
86
|
+
this.roomRetryMs = options.roomRetryMs;
|
|
87
|
+
}
|
|
88
|
+
/** The current socket, if there is one. */
|
|
89
|
+
current() {
|
|
90
|
+
return this.socket;
|
|
91
|
+
}
|
|
92
|
+
isConnected() {
|
|
93
|
+
return this.socket ? this.socket.connected : false;
|
|
94
|
+
}
|
|
95
|
+
/** Each region's own URL, as a server has said: see PartyRouting. */
|
|
96
|
+
setRegionUrls(urls) {
|
|
97
|
+
this.regionUrls = tidyUrls(urls);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Connects for `code`'s room, or for a new room with null, in place of
|
|
101
|
+
* whatever connection there is: asks where (see place) and opens a socket
|
|
102
|
+
* there. Host calls wait until it is attached. `avoid` are servers this
|
|
103
|
+
* connection must not go to, having just failed; `delay` holds the first
|
|
104
|
+
* try back, for a connection that has only just dropped.
|
|
105
|
+
*/
|
|
106
|
+
connectFor(code, { avoid = [], delay = false } = {}) {
|
|
107
|
+
const generation = ++this.generation;
|
|
108
|
+
this.setAttached(false);
|
|
109
|
+
this.dropSocket();
|
|
110
|
+
this.connecting = true;
|
|
111
|
+
this.routedPrefix = code ? (0, protocol_1.codePrefixOf)(code) : null;
|
|
112
|
+
void this.placeAndOpen(generation, code, avoid, delay);
|
|
113
|
+
}
|
|
114
|
+
/** Whether the connection there is, or is being made, will do for `code`'s room. */
|
|
115
|
+
connectedFor(code) {
|
|
116
|
+
if (!this.socket && !this.connecting) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
return code === null || this.routesTo(code);
|
|
120
|
+
}
|
|
121
|
+
/** Whether the connection is routed to the server `code`'s room is on. */
|
|
122
|
+
routesTo(code) {
|
|
123
|
+
return this.routedPrefix === (0, protocol_1.codePrefixOf)(code);
|
|
124
|
+
}
|
|
125
|
+
/** A connection for the room the client is in, if there is none. */
|
|
126
|
+
ensure() {
|
|
127
|
+
if (!this.socket && !this.connecting) {
|
|
128
|
+
this.connectFor(this.hooks.roomCode());
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** The server the current connection is routed to, as a list to avoid. */
|
|
132
|
+
avoidingRouted() {
|
|
133
|
+
return this.routedPrefix ? [this.routedPrefix] : [];
|
|
134
|
+
}
|
|
135
|
+
setAttached(attached) {
|
|
136
|
+
this.attached = attached;
|
|
137
|
+
if (attached) {
|
|
138
|
+
const waiters = this.attachedWaiters;
|
|
139
|
+
this.attachedWaiters = [];
|
|
140
|
+
for (const waiter of waiters) {
|
|
141
|
+
waiter();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
isAttached() {
|
|
146
|
+
return this.attached;
|
|
147
|
+
}
|
|
148
|
+
/** Attached: the connection is the room's, and stays so until it drops. */
|
|
149
|
+
attachedTo(socket) {
|
|
150
|
+
if (socket === this.socket) {
|
|
151
|
+
this.found();
|
|
152
|
+
this.retries = 0;
|
|
153
|
+
this.setAttached(true);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
whenAttached(what) {
|
|
157
|
+
if (this.attached) {
|
|
158
|
+
return Promise.resolve();
|
|
159
|
+
}
|
|
160
|
+
return withTimeout(new Promise(resolve => this.attachedWaiters.push(resolve)), this.ackTimeoutMs, `${what} (reconnecting)`);
|
|
161
|
+
}
|
|
162
|
+
/** Resolves once `socket` connects, in the time an answer is waited for. */
|
|
163
|
+
whenConnected(socket, what) {
|
|
164
|
+
return withTimeout(new Promise(resolve => socket.on('connect', () => resolve())), this.ackTimeoutMs, what);
|
|
165
|
+
}
|
|
166
|
+
send(socket, event, payload = {}) {
|
|
167
|
+
return withTimeout(new Promise(resolve => socket.emit(event, payload, resolve)), this.ackTimeoutMs, event);
|
|
168
|
+
}
|
|
169
|
+
/** Where `code`'s room is: its region's servers, or for no room the nearest. */
|
|
170
|
+
urlFor(code) {
|
|
171
|
+
return (code && this.regionUrlFor(code)) || this.url;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Asks the servers at `serverUrl` where to connect (see PLACEMENT_PATH):
|
|
175
|
+
* the prefix to route the socket by and the URL to open it at, `refused`
|
|
176
|
+
* when a server answered but will not take it, or null when none answered.
|
|
177
|
+
*/
|
|
178
|
+
async place(serverUrl, code, avoid) {
|
|
179
|
+
const result = await (0, protocol_1.requestPlacement)(this.fetch, serverUrl, code, avoid, this.placementTimeoutMs);
|
|
180
|
+
if ('placed' in result) {
|
|
181
|
+
const { prefix, regionSocketUrls } = result.placed;
|
|
182
|
+
if (regionSocketUrls) {
|
|
183
|
+
this.setRegionUrls(regionSocketUrls);
|
|
184
|
+
}
|
|
185
|
+
return { prefix, url: this.regionUrlFor(prefix) || serverUrl };
|
|
186
|
+
}
|
|
187
|
+
if ('refused' in result) {
|
|
188
|
+
return exports.refused;
|
|
189
|
+
}
|
|
190
|
+
this.logger.warn('PartyGames', 'placement failed at', serverUrl, result.failed);
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
/** A socket routed by `prefix`, the server placement handed out, at `url`. */
|
|
194
|
+
connectTo(prefix, url) {
|
|
195
|
+
return this.io(url, {
|
|
196
|
+
// polling first, then WebSocket where the network lets it through
|
|
197
|
+
transports: ['polling', 'websocket'],
|
|
198
|
+
jsonp: false,
|
|
199
|
+
query: { [protocol_1.ROUTING_QUERY_KEY]: prefix },
|
|
200
|
+
// socket.io-client 2.x polls with credentials unless told not to, and
|
|
201
|
+
// a browser refuses those against the servers' `*` CORS answer
|
|
202
|
+
withCredentials: false,
|
|
203
|
+
forceNew: true,
|
|
204
|
+
// the connection's own: a connection lost asks where to go again
|
|
205
|
+
reconnection: false,
|
|
206
|
+
timeout: this.ackTimeoutMs,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/** Lets go of the connection for good: whatever it was doing stops. */
|
|
210
|
+
close() {
|
|
211
|
+
++this.generation;
|
|
212
|
+
this.connecting = false;
|
|
213
|
+
this.found();
|
|
214
|
+
this.retries = 0;
|
|
215
|
+
this.routedPrefix = null;
|
|
216
|
+
this.dropSocket();
|
|
217
|
+
this.setAttached(true);
|
|
218
|
+
}
|
|
219
|
+
/** A server was reached: the room's server is not out of reach, or no longer. */
|
|
220
|
+
found() {
|
|
221
|
+
this.lostSince = null;
|
|
222
|
+
this.roomTries = 0;
|
|
223
|
+
this.roomSocketFailed = false;
|
|
224
|
+
}
|
|
225
|
+
dropSocket() {
|
|
226
|
+
const socket = this.socket;
|
|
227
|
+
// first, so its disconnect is not taken for a dropped connection
|
|
228
|
+
this.socket = null;
|
|
229
|
+
socket?.close();
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Asks where to connect until a server says, then opens the socket there.
|
|
233
|
+
* A refusal is asked again straight away, a few times - the load balancer
|
|
234
|
+
* hands the next ask to the next server - and anything else after a wait
|
|
235
|
+
* (see nextDelay).
|
|
236
|
+
*/
|
|
237
|
+
async placeAndOpen(generation, code, avoid, delay) {
|
|
238
|
+
let wait = delay;
|
|
239
|
+
let refusals = 0;
|
|
240
|
+
for (;;) {
|
|
241
|
+
if (wait) {
|
|
242
|
+
await new Promise(resolve => setTimeout(resolve, this.nextDelay(code)));
|
|
243
|
+
}
|
|
244
|
+
if (generation !== this.generation) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const placed = await this.placeFor(code, avoid);
|
|
248
|
+
if (generation !== this.generation) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (placed && placed !== exports.refused) {
|
|
252
|
+
this.openSocket(placed.prefix, placed.url);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
wait = placed !== exports.refused || ++refusals > exports.maxDrainingRetries;
|
|
256
|
+
if (wait) {
|
|
257
|
+
refusals = 0;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* How long to wait before the next try. A room's server is tried at the
|
|
263
|
+
* times `roomRetryMs` gives, counted from when it was lost, give or take a
|
|
264
|
+
* tenth so that a server's TVs do not all ask at the same moment - each try
|
|
265
|
+
* taking the next of them, whether its placement or its socket fails. A try
|
|
266
|
+
* due already, the last having taken that long, goes straight away.
|
|
267
|
+
* Anything else - no room, or a room's server tried that many times - backs
|
|
268
|
+
* off as socket.io would.
|
|
269
|
+
*/
|
|
270
|
+
nextDelay(code) {
|
|
271
|
+
const at = code && this.lostSince !== null
|
|
272
|
+
? this.roomRetryMs[this.roomTries]
|
|
273
|
+
: undefined;
|
|
274
|
+
if (at === undefined || this.lostSince === null) {
|
|
275
|
+
return (0, protocol_1.reconnectDelay)(this.retries++);
|
|
276
|
+
}
|
|
277
|
+
++this.roomTries;
|
|
278
|
+
const due = this.lostSince + at * (0.9 + Math.random() * 0.2);
|
|
279
|
+
return Math.max(0, due - Date.now());
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Which server to connect to for `code`'s room: the room's own, while it
|
|
283
|
+
* answers. Once it has failed every try `roomRetryMs` allows, it is given
|
|
284
|
+
* up on as soon as another server answers - the room went with its server,
|
|
285
|
+
* or its region - but not while none does: then it is this TV that is
|
|
286
|
+
* offline, and the room may well still be there. A room's server that
|
|
287
|
+
* answers but will not take the connection (on its way out, without the
|
|
288
|
+
* room) is given up on at once.
|
|
289
|
+
*
|
|
290
|
+
* From the last of those tries on, another server is asked alongside the
|
|
291
|
+
* room's, so a room that has gone is given up on without waiting for that
|
|
292
|
+
* try to time out as well. Its answer is only taken if the room's server
|
|
293
|
+
* fails: asking where to connect opens nothing. A room's server whose
|
|
294
|
+
* placement answers but whose socket has failed since counts as failing
|
|
295
|
+
* then, as unreachable all the same.
|
|
296
|
+
*/
|
|
297
|
+
async placeFor(code, avoid) {
|
|
298
|
+
if (!code) {
|
|
299
|
+
return this.place(this.url, null, avoid);
|
|
300
|
+
}
|
|
301
|
+
const others = [...avoid, (0, protocol_1.codePrefixOf)(code)];
|
|
302
|
+
// the last of the room's tries, or past them
|
|
303
|
+
const last = this.roomTries >= this.roomRetryMs.length;
|
|
304
|
+
const askingElsewhere = last ? this.place(this.url, null, others) : null;
|
|
305
|
+
const own = await this.place(this.urlFor(code), code, avoid);
|
|
306
|
+
const placed = own && own !== exports.refused ? own : null;
|
|
307
|
+
if (placed && !(last && this.roomSocketFailed)) {
|
|
308
|
+
return placed;
|
|
309
|
+
}
|
|
310
|
+
this.lostSince ??= Date.now();
|
|
311
|
+
if (!placed && own !== exports.refused && !last) {
|
|
312
|
+
return null;
|
|
313
|
+
}
|
|
314
|
+
const elsewhere = await (askingElsewhere ??
|
|
315
|
+
this.place(this.url, null, others));
|
|
316
|
+
if (!elsewhere || elsewhere === exports.refused) {
|
|
317
|
+
// nowhere else either: the room's server, if it answered, is all there is
|
|
318
|
+
return placed || elsewhere;
|
|
319
|
+
}
|
|
320
|
+
this.logger.warn('PartyGames', 'room', code, 'out of reach, going to', elsewhere.prefix);
|
|
321
|
+
return elsewhere;
|
|
322
|
+
}
|
|
323
|
+
/** The servers of `code`'s region, if the connection knows where they are. */
|
|
324
|
+
regionUrlFor(code) {
|
|
325
|
+
const region = (0, protocol_1.regionOfCode)(code);
|
|
326
|
+
return region ? this.regionUrls[region] : undefined;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* After a connection is lost, or never made: the room's own server is
|
|
330
|
+
* asked for again, until it is given up on (see placeFor). With no room,
|
|
331
|
+
* any server but the one that failed.
|
|
332
|
+
*/
|
|
333
|
+
reconnect(failed) {
|
|
334
|
+
this.lostSince ??= Date.now();
|
|
335
|
+
const code = this.hooks.roomCode();
|
|
336
|
+
this.connectFor(code, { avoid: code ? [] : [failed], delay: true });
|
|
337
|
+
}
|
|
338
|
+
openSocket(prefix, url) {
|
|
339
|
+
this.connecting = false;
|
|
340
|
+
this.routedPrefix = prefix;
|
|
341
|
+
const socket = this.connectTo(prefix, url);
|
|
342
|
+
this.socket = socket;
|
|
343
|
+
socket.on('connect', () => {
|
|
344
|
+
if (socket !== this.socket) {
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
// a server was reached: whatever it says of the room - here, moved,
|
|
348
|
+
// gone - the tries so far do not count against the next server
|
|
349
|
+
this.found();
|
|
350
|
+
this.logger.debug('PartyGames', 'connected to', url, 'as', prefix);
|
|
351
|
+
this.hooks.connected(socket, prefix);
|
|
352
|
+
});
|
|
353
|
+
socket.on('disconnect', () => {
|
|
354
|
+
if (socket !== this.socket) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
this.logger.debug('PartyGames', 'disconnected');
|
|
358
|
+
this.reconnect(prefix);
|
|
359
|
+
});
|
|
360
|
+
socket.on('connect_error', (error) => {
|
|
361
|
+
if (socket !== this.socket) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
this.logger.warn('PartyGames', 'connect error', error?.message);
|
|
365
|
+
const code = this.hooks.roomCode();
|
|
366
|
+
if (code && (0, protocol_1.codePrefixOf)(code) === prefix) {
|
|
367
|
+
this.roomSocketFailed = true;
|
|
368
|
+
}
|
|
369
|
+
this.reconnect(prefix);
|
|
370
|
+
});
|
|
371
|
+
this.hooks.opened(socket);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
exports.PartyConnection = PartyConnection;
|
|
375
|
+
//# sourceMappingURL=connection.js.map
|