@quakejs/master 1.0.19 → 1.0.20
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/master-client.js +17 -14
- package/master-server.js +6 -6
- package/package.json +1 -1
package/master-client.js
CHANGED
|
@@ -17,13 +17,14 @@ class MasterClient extends MasterBase {
|
|
|
17
17
|
session.closed.catch(() => {});
|
|
18
18
|
|
|
19
19
|
(async () => {
|
|
20
|
+
let resendTimeout;
|
|
21
|
+
|
|
20
22
|
try {
|
|
21
23
|
await session.ready;
|
|
22
24
|
|
|
25
|
+
/* send until a response is received */
|
|
23
26
|
const writer = session.datagrams.writable.getWriter();
|
|
24
|
-
let resendTimeout;
|
|
25
27
|
|
|
26
|
-
/* send until a response is received */
|
|
27
28
|
const send = () => {
|
|
28
29
|
writer.write(this.encode('subscribe')).catch(() => {});
|
|
29
30
|
|
|
@@ -33,12 +34,12 @@ class MasterClient extends MasterBase {
|
|
|
33
34
|
send();
|
|
34
35
|
|
|
35
36
|
/* read responses */
|
|
36
|
-
for await (const
|
|
37
|
+
for await (const packet of session.datagrams.readable) {
|
|
37
38
|
clearTimeout(resendTimeout);
|
|
38
39
|
|
|
39
|
-
console.log(`${host}:${port} ---> ${this.pretty(
|
|
40
|
+
console.log(`${host}:${port} ---> ${this.pretty(packet)}`);
|
|
40
41
|
|
|
41
|
-
const msg = this.decode(
|
|
42
|
+
const msg = this.decode(packet);
|
|
42
43
|
|
|
43
44
|
if (msg && msg.type === 'getserversResponse') {
|
|
44
45
|
for (const server of msg.servers) {
|
|
@@ -47,7 +48,7 @@ class MasterClient extends MasterBase {
|
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
|
|
50
|
-
console.log(
|
|
51
|
+
console.log('Disconnected from master server');
|
|
51
52
|
} catch (e) {
|
|
52
53
|
console.error('Disconnected from master server due to error', e);
|
|
53
54
|
} finally {
|
|
@@ -70,10 +71,11 @@ class MasterClient extends MasterBase {
|
|
|
70
71
|
await session.ready;
|
|
71
72
|
|
|
72
73
|
/* send request multiple times until something is read back */
|
|
74
|
+
const writer = session.datagrams.writable.getWriter();
|
|
75
|
+
|
|
73
76
|
const send = () => {
|
|
74
77
|
begin = performance.now();
|
|
75
78
|
|
|
76
|
-
const writer = session.datagrams.writable.getWriter();
|
|
77
79
|
writer.write(this.encode('getinfo')).catch(() => {});
|
|
78
80
|
|
|
79
81
|
resendTimeout = setTimeout(send, 3000);
|
|
@@ -82,12 +84,12 @@ class MasterClient extends MasterBase {
|
|
|
82
84
|
send();
|
|
83
85
|
|
|
84
86
|
/* read response */
|
|
85
|
-
for await (const
|
|
87
|
+
for await (const packet of session.datagrams.readable) {
|
|
86
88
|
clearTimeout(resendTimeout);
|
|
87
89
|
|
|
88
|
-
console.log(`${addr}:${port} ---> ${this.pretty(
|
|
90
|
+
console.log(`${addr}:${port} ---> ${this.pretty(packet)}`);
|
|
89
91
|
|
|
90
|
-
const msg = this.decode(
|
|
92
|
+
const msg = this.decode(packet);
|
|
91
93
|
|
|
92
94
|
if (!msg || msg.type !== 'infoResponse') {
|
|
93
95
|
throw new Error('invalid response type');
|
|
@@ -125,10 +127,11 @@ class MasterClient extends MasterBase {
|
|
|
125
127
|
await session.ready;
|
|
126
128
|
|
|
127
129
|
/* send request multiple times until something is read back */
|
|
130
|
+
const writer = session.datagrams.writable.getWriter();
|
|
131
|
+
|
|
128
132
|
const send = () => {
|
|
129
133
|
begin = performance.now();
|
|
130
134
|
|
|
131
|
-
const writer = session.datagrams.writable.getWriter();
|
|
132
135
|
writer.write(this.encode('getstatus')).catch(() => {});
|
|
133
136
|
|
|
134
137
|
resendTimeout = setTimeout(send, 3000);
|
|
@@ -137,12 +140,12 @@ class MasterClient extends MasterBase {
|
|
|
137
140
|
send();
|
|
138
141
|
|
|
139
142
|
/* read response */
|
|
140
|
-
for await (const
|
|
143
|
+
for await (const packet of session.datagrams.readable) {
|
|
141
144
|
clearTimeout(resendTimeout);
|
|
142
145
|
|
|
143
|
-
console.log(`${addr}:${port} ---> ${this.pretty(
|
|
146
|
+
console.log(`${addr}:${port} ---> ${this.pretty(packet)}`);
|
|
144
147
|
|
|
145
|
-
const msg = this.decode(
|
|
148
|
+
const msg = this.decode(packet);
|
|
146
149
|
|
|
147
150
|
if (!msg || msg.type !== 'statusResponse') {
|
|
148
151
|
throw new Error('invalid response type');
|
package/master-server.js
CHANGED
|
@@ -145,11 +145,11 @@ class MasterServer extends MasterBase {
|
|
|
145
145
|
try {
|
|
146
146
|
await this.#h3.ready;
|
|
147
147
|
|
|
148
|
-
const
|
|
148
|
+
const stream = await this.#h3.sessionStream('/');
|
|
149
149
|
|
|
150
150
|
console.log(`listening on ${this.#h3.host}:${this.#h3.port}`);
|
|
151
151
|
|
|
152
|
-
for await (const session of
|
|
152
|
+
for await (const session of stream) {
|
|
153
153
|
/* prevent unhandled rejections before main loop */
|
|
154
154
|
session.ready.catch(() => {});
|
|
155
155
|
session.closed.catch(() => {});
|
|
@@ -169,11 +169,11 @@ class MasterServer extends MasterBase {
|
|
|
169
169
|
writer.write(data).catch(e => {});
|
|
170
170
|
};
|
|
171
171
|
|
|
172
|
-
for await (const
|
|
173
|
-
console.log(`${session.addr}:${session.port} ---> ${this.pretty(
|
|
172
|
+
for await (const packet of session.datagrams.readable) {
|
|
173
|
+
console.log(`${session.addr}:${session.port} ---> ${this.pretty(packet)}`);
|
|
174
174
|
|
|
175
175
|
if (first) {
|
|
176
|
-
const str = String.fromCharCode.apply(null,
|
|
176
|
+
const str = String.fromCharCode.apply(null, packet);
|
|
177
177
|
|
|
178
178
|
first = false;
|
|
179
179
|
|
|
@@ -183,7 +183,7 @@ class MasterServer extends MasterBase {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
const msg = this.decode(
|
|
186
|
+
const msg = this.decode(packet);
|
|
187
187
|
|
|
188
188
|
switch (msg?.type) {
|
|
189
189
|
case 'heartbeat':
|