sleepy-socket 0.9.0 → 0.10.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/dist/index.d.ts CHANGED
@@ -15,13 +15,14 @@ export type ReconnectOptions = {
15
15
  factor?: number;
16
16
  random?: () => number;
17
17
  };
18
- export type ConnectOptions = {
18
+ export type OpenOptions = {
19
19
  queue?: Queue;
20
20
  secure?: boolean;
21
21
  timeout?: number;
22
22
  serverTimeout?: number;
23
23
  mountPath?: string;
24
24
  reconnect?: ReconnectOptions | false;
25
+ ctx?: unknown;
25
26
  };
26
27
  export type RequestOptions = {
27
28
  headers?: Headers;
@@ -46,16 +47,23 @@ export type NotificationMessage = {
46
47
  headers: Record<string, string>;
47
48
  body: unknown;
48
49
  };
49
- export type EventHandler = (payload: NotificationMessage) => void;
50
+ export type EventHandler = (payload: unknown) => void;
50
51
  export type TicketData = {
51
52
  clientId: string;
52
53
  ticket: string;
53
54
  data: unknown;
54
55
  };
56
+ export declare class HandshakeError extends Error {
57
+ status: number;
58
+ body: unknown;
59
+ constructor(status: number, body: unknown);
60
+ }
55
61
  export default class SleepySocketClient {
56
62
  #private;
57
63
  get id(): string | null;
58
64
  get isConnected(): boolean;
65
+ get isConnecting(): boolean;
66
+ get isReconnecting(): boolean;
59
67
  get isSecure(): boolean;
60
68
  get queueType(): Queue;
61
69
  get timeout(): number;
@@ -65,7 +73,7 @@ export default class SleepySocketClient {
65
73
  get mountPath(): string;
66
74
  get socket(): WebSocket | null;
67
75
  get connectionData(): unknown;
68
- static connect(host: string, port: number, opts?: ConnectOptions): Promise<SleepySocketClient>;
76
+ static open(host: string, port: number, opts?: OpenOptions): Promise<SleepySocketClient>;
69
77
  on(event: string, handler: EventHandler): void;
70
78
  off(event: string, handler: EventHandler): void;
71
79
  close(): Promise<void>;
@@ -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
@@ -1,5 +1,5 @@
1
1
  import { MessageType, createMessage } from './messages.js';
2
- import { joinRoute } from './utils.js';
2
+ import { CloseCode, joinRoute } from './utils.js';
3
3
  export * from './messages.js';
4
4
  export * from './utils.js';
5
5
  export const Queue = {
@@ -9,10 +9,21 @@ export const Queue = {
9
9
  };
10
10
  const RECONNECT_JITTER = 0.5;
11
11
  const JSON_CONTENT_TYPE = 'application/json;charset=utf-8';
12
+ export class HandshakeError extends Error {
13
+ status;
14
+ body;
15
+ constructor(status, body) {
16
+ super(`Handshake rejected (${status})`);
17
+ this.name = 'HandshakeError';
18
+ this.status = status;
19
+ this.body = body;
20
+ }
21
+ }
12
22
  export default class SleepySocketClient {
13
23
  #id = null;
14
24
  #queueType = Queue.None;
15
25
  #ready = false;
26
+ #connecting = false;
16
27
  #closing = false;
17
28
  #secure = false;
18
29
  #timeout = 30_000;
@@ -23,20 +34,28 @@ export default class SleepySocketClient {
23
34
  #port = null;
24
35
  #token = null;
25
36
  #socket = null;
26
- #random = Math.random;
27
37
  #livenessTimer = null;
28
38
  #heartbeatTimer = null;
29
39
  #reconnectTimer = null;
30
40
  #reconnectConfig = null;
41
+ #ctx;
31
42
  #connectionData = null;
32
43
  #listeners = new Map();
33
44
  #dispatchedMessages = [];
45
+ #random = Math.random;
46
+ #closeResolve = null;
34
47
  get id() {
35
48
  return this.#id;
36
49
  }
37
50
  get isConnected() {
38
51
  return this.#ready;
39
52
  }
53
+ get isConnecting() {
54
+ return this.#connecting;
55
+ }
56
+ get isReconnecting() {
57
+ return !this.isConnected && this.#reconnectTimer !== null;
58
+ }
40
59
  get isSecure() {
41
60
  return this.#secure;
42
61
  }
@@ -64,7 +83,7 @@ export default class SleepySocketClient {
64
83
  get connectionData() {
65
84
  return this.#connectionData;
66
85
  }
67
- static async connect(host, port, opts = {}) {
86
+ static async open(host, port, opts = {}) {
68
87
  if (opts.queue && !Object.values(Queue).includes(opts.queue)) {
69
88
  throw new RangeError(`Invalid queue type: ${opts.queue}`);
70
89
  }
@@ -79,6 +98,7 @@ export default class SleepySocketClient {
79
98
  client.#timeout = opts.timeout ?? 30_000;
80
99
  client.#serverTimeout = opts.serverTimeout ?? 120_000;
81
100
  client.#mountPath = opts.mountPath ?? '';
101
+ client.#ctx = opts.ctx;
82
102
  if (opts.reconnect !== false) {
83
103
  client.#reconnectConfig = {
84
104
  minDelay: reconnect.minDelay ?? 500,
@@ -90,18 +110,43 @@ export default class SleepySocketClient {
90
110
  await client.#establish();
91
111
  return client;
92
112
  }
93
- #baseUrl() {
113
+ #getEndpointBaseUrl() {
94
114
  const protocol = this.#secure ? 'https' : 'http';
95
115
  return `${protocol}://${this.#host}:${this.#port}${this.#mountPath}`;
96
116
  }
117
+ #getSocketUrl(ticket) {
118
+ const protocol = this.#secure ? 'wss' : 'ws';
119
+ const authority = `${this.#host}:${this.#port}${this.#mountPath}`;
120
+ return `${protocol}://${authority}/ws?ticket=${ticket}`;
121
+ }
122
+ async #handleError(response) {
123
+ const body = await response.json().catch(() => null);
124
+ if (!body) {
125
+ const msg = await response.text();
126
+ throw new Error(msg);
127
+ }
128
+ throw new HandshakeError(response.status, body);
129
+ }
97
130
  async #createTicket() {
98
- const response = await fetch(`${this.#baseUrl()}/ws`, {
131
+ const url = `${this.#getEndpointBaseUrl()}/ws`;
132
+ const response = await fetch(url, {
99
133
  method: 'POST',
134
+ ...(this.#ctx ? {
135
+ headers: {
136
+ 'content-type': JSON_CONTENT_TYPE,
137
+ },
138
+ body: JSON.stringify({
139
+ data: this.#ctx,
140
+ }),
141
+ } : {}),
100
142
  });
143
+ if (!response.ok) {
144
+ await this.#handleError(response);
145
+ }
101
146
  return await response.json();
102
147
  }
103
148
  async #reclaimTicket() {
104
- const url = `${this.#baseUrl()}/ws/${this.#id}`;
149
+ const url = `${this.#getEndpointBaseUrl()}/ws/${this.#id}`;
105
150
  const response = await fetch(url, {
106
151
  method: 'PUT',
107
152
  headers: {
@@ -109,7 +154,10 @@ export default class SleepySocketClient {
109
154
  },
110
155
  });
111
156
  if (!response.ok) {
112
- return null;
157
+ if ([401, 404].includes(response.status)) {
158
+ return null;
159
+ }
160
+ await this.#handleError(response);
113
161
  }
114
162
  return await response.json();
115
163
  }
@@ -122,13 +170,8 @@ export default class SleepySocketClient {
122
170
  }
123
171
  return this.#createTicket();
124
172
  }
125
- #socketUrl(ticket) {
126
- const protocol = this.#secure ? 'wss' : 'ws';
127
- const authority = `${this.#host}:${this.#port}${this.#mountPath}`;
128
- return `${protocol}://${authority}/ws?ticket=${ticket}`;
129
- }
130
173
  #openSocket(res, succeed, fail) {
131
- const socket = new WebSocket(this.#socketUrl(res.ticket));
174
+ const socket = new WebSocket(this.#getSocketUrl(res.ticket));
132
175
  this.#socket = socket;
133
176
  this.#connectionData = res.data;
134
177
  const onError = () => fail('Connection failed.');
@@ -156,6 +199,7 @@ export default class SleepySocketClient {
156
199
  socket.addEventListener('error', onError);
157
200
  }
158
201
  #establish() {
202
+ this.#connecting = true;
159
203
  return new Promise((resolve, reject) => {
160
204
  let settled = false;
161
205
  const timer = setTimeout(() => {
@@ -184,7 +228,20 @@ export default class SleepySocketClient {
184
228
  };
185
229
  this.#requestTicket()
186
230
  .then(ticketData => this.#openSocket(ticketData, succeed, fail))
187
- .catch(() => fail('Connection failed.'));
231
+ .catch(err => {
232
+ if (err instanceof HandshakeError) {
233
+ if (settled) {
234
+ return;
235
+ }
236
+ settled = true;
237
+ clearTimeout(timer);
238
+ reject(err);
239
+ return;
240
+ }
241
+ fail('Connection failed.');
242
+ });
243
+ }).finally(() => {
244
+ this.#connecting = false;
188
245
  });
189
246
  }
190
247
  #armLiveness() {
@@ -192,7 +249,7 @@ export default class SleepySocketClient {
192
249
  clearTimeout(this.#livenessTimer);
193
250
  }
194
251
  this.#livenessTimer = setTimeout(() => {
195
- this.#socket?.close();
252
+ this.#socket?.close(CloseCode.Reaped);
196
253
  }, this.serverTimeout);
197
254
  }
198
255
  #scheduleReconnect(attempt, config) {
@@ -201,17 +258,16 @@ export default class SleepySocketClient {
201
258
  const delay = base * (1 + this.#random() * RECONNECT_JITTER);
202
259
  this.#reconnectTimer = setTimeout(async () => {
203
260
  this.#reconnectTimer = null;
204
- if (this.#closing) {
205
- return;
206
- }
207
261
  try {
208
- await this.#establish();
262
+ if (!this.#closing) {
263
+ await this.#establish();
264
+ }
209
265
  }
210
- catch {
211
- if (this.#closing) {
212
- return;
266
+ catch (err) {
267
+ const isHandshakeError = err instanceof HandshakeError;
268
+ if (!this.#closing && !isHandshakeError) {
269
+ this.#scheduleReconnect(attempt + 1, config);
213
270
  }
214
- this.#scheduleReconnect(attempt + 1, config);
215
271
  }
216
272
  }, delay);
217
273
  }
@@ -281,6 +337,7 @@ export default class SleepySocketClient {
281
337
  this.#stopHeartbeat();
282
338
  if (this.#livenessTimer) {
283
339
  clearTimeout(this.#livenessTimer);
340
+ this.#livenessTimer = null;
284
341
  }
285
342
  for (const entry of this.#dispatchedMessages) {
286
343
  clearTimeout(entry.timer);
@@ -288,16 +345,16 @@ export default class SleepySocketClient {
288
345
  }
289
346
  this.#dispatchedMessages = [];
290
347
  this.#socket = null;
291
- if (this.#closing) {
292
- return;
348
+ this.#emit('close', { code: event.code });
349
+ if (!this.#closing &&
350
+ this.#reconnectConfig &&
351
+ event.code !== CloseCode.Ok) {
352
+ this.#scheduleReconnect(0, this.#reconnectConfig);
293
353
  }
294
- if (!this.#reconnectConfig) {
295
- if (!event.wasClean) {
296
- throw new Error(`Socket closed unexpectedly (code: ${event.code}).`);
297
- }
298
- return;
354
+ if (this.#closeResolve) {
355
+ this.#closeResolve();
356
+ this.#closeResolve = null;
299
357
  }
300
- this.#scheduleReconnect(0, this.#reconnectConfig);
301
358
  }
302
359
  #handleRequest(data) {
303
360
  const entry = this.#dispatchedMessages.find(item => item.id === data.id);
@@ -379,24 +436,27 @@ export default class SleepySocketClient {
379
436
  off(event, handler) {
380
437
  this.#listeners.get(event)?.delete(handler);
381
438
  }
382
- async close() {
439
+ close() {
383
440
  if (this.#closing) {
384
- throw new Error('Socket is closed');
441
+ return Promise.reject(new Error('Socket is closed'));
385
442
  }
386
443
  this.#closing = true;
387
444
  this.#ready = false;
388
445
  this.#stopHeartbeat();
389
446
  if (this.#livenessTimer) {
390
447
  clearTimeout(this.#livenessTimer);
448
+ this.#livenessTimer = null;
391
449
  }
392
450
  if (this.#reconnectTimer) {
393
451
  clearTimeout(this.#reconnectTimer);
452
+ this.#reconnectTimer = null;
394
453
  }
395
- this.#reconnectTimer = null;
396
- if (this.#socket) {
397
- await this.#socket.close();
398
- this.#socket = null;
399
- }
454
+ return this.#socket
455
+ ? new Promise(resolve => {
456
+ this.#closeResolve = resolve;
457
+ this.#socket.close(CloseCode.Ok);
458
+ })
459
+ : Promise.resolve();
400
460
  }
401
461
  head(route, opts = {}) {
402
462
  return this.#sendRequest('HEAD', route, opts);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -63,6 +63,12 @@ export declare const StatusCode: {
63
63
  readonly NetworkAuthenticationRequired: 511;
64
64
  };
65
65
  export type StatusCode = typeof StatusCode[keyof typeof StatusCode];
66
+ export declare const CloseCode: {
67
+ readonly Ok: 1000;
68
+ readonly Abnormal: 1006;
69
+ readonly Reaped: 4999;
70
+ };
71
+ export type CloseCode = typeof CloseCode[keyof typeof CloseCode];
66
72
  export type IdGenerator = () => string;
67
73
  export declare const defaultIdGenerator: IdGenerator;
68
74
  export declare function joinRoute(...segments: string[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEb,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEnE,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAA;AAEtC,eAAO,MAAM,kBAAkB,EAAE,WAAuC,CAAA;AAIxE,wBAAgB,SAAS,CAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAOxD;AAED,wBAAgB,EAAE,IAAK,MAAM,CAE5B;AAED,wBAAgB,cAAc,CAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAErD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEb,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAEnE,eAAO,MAAM,SAAS;;;;CAIZ,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAA;AAEhE,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAA;AAEtC,eAAO,MAAM,kBAAkB,EAAE,WAAuC,CAAA;AAIxE,wBAAgB,SAAS,CAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAOxD;AAED,wBAAgB,EAAE,IAAK,MAAM,CAE5B;AAED,wBAAgB,cAAc,CAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAErD"}
package/dist/utils.js CHANGED
@@ -62,6 +62,11 @@ export const StatusCode = {
62
62
  NotExtended: 510,
63
63
  NetworkAuthenticationRequired: 511,
64
64
  };
65
+ export const CloseCode = {
66
+ Ok: 1000,
67
+ Abnormal: 1006,
68
+ Reaped: 4999,
69
+ };
65
70
  export const defaultIdGenerator = () => crypto.randomUUID();
66
71
  let _uuidFn = defaultIdGenerator;
67
72
  export function joinRoute(...segments) {
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,GAAG;IACb,kBAAkB,EAAE,GAAG;IACvB,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,GAAG;IAEf,EAAE,EAAE,GAAG;IACP,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,2BAA2B,EAAE,GAAG;IAChC,SAAS,EAAE,GAAG;IACd,YAAY,EAAE,GAAG;IACjB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,GAAG;IACpB,MAAM,EAAE,GAAG;IAEX,eAAe,EAAE,GAAG;IACpB,gBAAgB,EAAE,GAAG;IACrB,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,GAAG;IACb,WAAW,EAAE,GAAG;IAChB,QAAQ,EAAE,GAAG;IACb,iBAAiB,EAAE,GAAG;IACtB,iBAAiB,EAAE,GAAG;IAEtB,UAAU,EAAE,GAAG;IACf,YAAY,EAAE,GAAG;IACjB,eAAe,EAAE,GAAG;IACpB,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,gBAAgB,EAAE,GAAG;IACrB,aAAa,EAAE,GAAG;IAClB,2BAA2B,EAAE,GAAG;IAChC,cAAc,EAAE,GAAG;IACnB,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,cAAc,EAAE,GAAG;IACnB,kBAAkB,EAAE,GAAG;IACvB,eAAe,EAAE,GAAG;IACpB,UAAU,EAAE,GAAG;IACf,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE,GAAG;IACxB,iBAAiB,EAAE,GAAG;IACtB,SAAS,EAAE,GAAG;IACd,kBAAkB,EAAE,GAAG;IACvB,oBAAoB,EAAE,GAAG;IACzB,MAAM,EAAE,GAAG;IACX,gBAAgB,EAAE,GAAG;IACrB,QAAQ,EAAE,GAAG;IACb,eAAe,EAAE,GAAG;IACpB,oBAAoB,EAAE,GAAG;IACzB,eAAe,EAAE,GAAG;IACpB,2BAA2B,EAAE,GAAG;IAChC,0BAA0B,EAAE,GAAG;IAE/B,mBAAmB,EAAE,GAAG;IACxB,cAAc,EAAE,GAAG;IACnB,UAAU,EAAE,GAAG;IACf,kBAAkB,EAAE,GAAG;IACvB,cAAc,EAAE,GAAG;IACnB,uBAAuB,EAAE,GAAG;IAC5B,qBAAqB,EAAE,GAAG;IAC1B,mBAAmB,EAAE,GAAG;IACxB,YAAY,EAAE,GAAG;IACjB,WAAW,EAAE,GAAG;IAChB,6BAA6B,EAAE,GAAG;CAC1B,CAAA;AAMV,MAAM,CAAC,MAAM,kBAAkB,GAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;AAExE,IAAI,OAAO,GAAgB,kBAAkB,CAAA;AAE7C,MAAM,UAAU,SAAS,CAAE,GAAG,QAAkB;IAC9C,MAAM,MAAM,GAAG,QAAQ;SACpB,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC;SACT,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAE1B,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,EAAE;IAChB,OAAO,OAAO,EAAE,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAE,EAAe;IAC7C,OAAO,GAAG,EAAE,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,GAAG;IACb,kBAAkB,EAAE,GAAG;IACvB,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,GAAG;IAEf,EAAE,EAAE,GAAG;IACP,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,2BAA2B,EAAE,GAAG;IAChC,SAAS,EAAE,GAAG;IACd,YAAY,EAAE,GAAG;IACjB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,GAAG;IACpB,MAAM,EAAE,GAAG;IAEX,eAAe,EAAE,GAAG;IACpB,gBAAgB,EAAE,GAAG;IACrB,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,GAAG;IACb,WAAW,EAAE,GAAG;IAChB,QAAQ,EAAE,GAAG;IACb,iBAAiB,EAAE,GAAG;IACtB,iBAAiB,EAAE,GAAG;IAEtB,UAAU,EAAE,GAAG;IACf,YAAY,EAAE,GAAG;IACjB,eAAe,EAAE,GAAG;IACpB,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,gBAAgB,EAAE,GAAG;IACrB,aAAa,EAAE,GAAG;IAClB,2BAA2B,EAAE,GAAG;IAChC,cAAc,EAAE,GAAG;IACnB,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,cAAc,EAAE,GAAG;IACnB,kBAAkB,EAAE,GAAG;IACvB,eAAe,EAAE,GAAG;IACpB,UAAU,EAAE,GAAG;IACf,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE,GAAG;IACxB,iBAAiB,EAAE,GAAG;IACtB,SAAS,EAAE,GAAG;IACd,kBAAkB,EAAE,GAAG;IACvB,oBAAoB,EAAE,GAAG;IACzB,MAAM,EAAE,GAAG;IACX,gBAAgB,EAAE,GAAG;IACrB,QAAQ,EAAE,GAAG;IACb,eAAe,EAAE,GAAG;IACpB,oBAAoB,EAAE,GAAG;IACzB,eAAe,EAAE,GAAG;IACpB,2BAA2B,EAAE,GAAG;IAChC,0BAA0B,EAAE,GAAG;IAE/B,mBAAmB,EAAE,GAAG;IACxB,cAAc,EAAE,GAAG;IACnB,UAAU,EAAE,GAAG;IACf,kBAAkB,EAAE,GAAG;IACvB,cAAc,EAAE,GAAG;IACnB,uBAAuB,EAAE,GAAG;IAC5B,qBAAqB,EAAE,GAAG;IAC1B,mBAAmB,EAAE,GAAG;IACxB,YAAY,EAAE,GAAG;IACjB,WAAW,EAAE,GAAG;IAChB,6BAA6B,EAAE,GAAG;CAC1B,CAAA;AAIV,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;CACJ,CAAA;AAMV,MAAM,CAAC,MAAM,kBAAkB,GAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;AAExE,IAAI,OAAO,GAAgB,kBAAkB,CAAA;AAE7C,MAAM,UAAU,SAAS,CAAE,GAAG,QAAkB;IAC9C,MAAM,MAAM,GAAG,QAAQ;SACpB,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC;SACT,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAE1B,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,EAAE;IAChB,OAAO,OAAO,EAAE,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAE,EAAe;IAC7C,OAAO,GAAG,EAAE,CAAA;AACd,CAAC"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "A dependency-free WebSocket client for sleepy-serv",
4
4
  "author": "Travis J True",
5
5
  "license": "MIT",
6
- "version": "0.9.0",
6
+ "version": "0.10.0",
7
7
  "exports": {
8
8
  ".": {
9
9
  "types": "./dist/index.d.ts",
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { MessageType, createMessage } from './messages.js'
2
- import { joinRoute } from './utils.js'
2
+ import { CloseCode, joinRoute } from './utils.js'
3
3
 
4
4
  export * from './messages.js'
5
5
  export * from './utils.js'
@@ -22,13 +22,14 @@ export type ReconnectOptions = {
22
22
  random?: () => number
23
23
  }
24
24
 
25
- export type ConnectOptions = {
25
+ export type OpenOptions = {
26
26
  queue?: Queue
27
27
  secure?: boolean
28
28
  timeout?: number
29
29
  serverTimeout?: number
30
30
  mountPath?: string
31
31
  reconnect?: ReconnectOptions | false
32
+ ctx?: unknown
32
33
  }
33
34
 
34
35
  export type RequestOptions = {
@@ -57,7 +58,7 @@ export type NotificationMessage = {
57
58
  body: unknown
58
59
  }
59
60
 
60
- export type EventHandler = (payload: NotificationMessage) => void
61
+ export type EventHandler = (payload: unknown) => void
61
62
 
62
63
  export type TicketData = {
63
64
  clientId: string
@@ -74,7 +75,7 @@ type ReconnectConfig = {
74
75
  type DispatchedMessage = {
75
76
  id: string
76
77
  ready: boolean
77
- timer: ReturnType<typeof setTimeout>
78
+ timer: TimeoutHandle
78
79
  response: ResponseMessage | null
79
80
  resolve: (value: ResponseMessage) => void
80
81
  reject: (reason: Error) => void
@@ -89,10 +90,24 @@ type NormalizedRequestOpts = {
89
90
  const RECONNECT_JITTER = 0.5
90
91
  const JSON_CONTENT_TYPE = 'application/json;charset=utf-8'
91
92
 
93
+ export class HandshakeError extends Error {
94
+ status: number
95
+ body: unknown
96
+
97
+ constructor (status: number, body: unknown) {
98
+ super(`Handshake rejected (${status})`)
99
+
100
+ this.name = 'HandshakeError'
101
+ this.status = status
102
+ this.body = body
103
+ }
104
+ }
105
+
92
106
  export default class SleepySocketClient {
93
107
  #id: string | null = null
94
108
  #queueType: Queue = Queue.None
95
109
  #ready = false
110
+ #connecting = false
96
111
  #closing = false
97
112
  #secure = false
98
113
  #timeout = 30_000
@@ -103,15 +118,18 @@ export default class SleepySocketClient {
103
118
  #port: number | null = null
104
119
  #token: string | null = null
105
120
  #socket: WebSocket | null = null
106
- #random: () => number = Math.random
107
- #livenessTimer: ReturnType<typeof setTimeout> | null = null
108
- #heartbeatTimer: ReturnType<typeof setInterval> | null = null
109
- #reconnectTimer: ReturnType<typeof setTimeout> | null = null
121
+ #livenessTimer: TimeoutHandle | null = null
122
+ #heartbeatTimer: IntervalHandle | null = null
123
+ #reconnectTimer: TimeoutHandle | null = null
110
124
  #reconnectConfig: ReconnectConfig | null = null
125
+ #ctx: unknown
111
126
  #connectionData: unknown = null
112
127
  #listeners = new Map<string, Set<EventHandler>>()
113
128
  #dispatchedMessages: DispatchedMessage[] = []
114
129
 
130
+ #random: () => number = Math.random
131
+ #closeResolve: (() => void) | null = null
132
+
115
133
  get id (): string | null {
116
134
  return this.#id
117
135
  }
@@ -120,6 +138,14 @@ export default class SleepySocketClient {
120
138
  return this.#ready
121
139
  }
122
140
 
141
+ get isConnecting (): boolean {
142
+ return this.#connecting
143
+ }
144
+
145
+ get isReconnecting (): boolean {
146
+ return !this.isConnected && this.#reconnectTimer !== null
147
+ }
148
+
123
149
  get isSecure (): boolean {
124
150
  return this.#secure
125
151
  }
@@ -156,10 +182,10 @@ export default class SleepySocketClient {
156
182
  return this.#connectionData
157
183
  }
158
184
 
159
- static async connect (
185
+ static async open (
160
186
  host: string,
161
187
  port: number,
162
- opts: ConnectOptions = {},
188
+ opts: OpenOptions = {},
163
189
  ): Promise<SleepySocketClient> {
164
190
  if (opts.queue && !Object.values(Queue).includes(opts.queue)) {
165
191
  throw new RangeError(`Invalid queue type: ${opts.queue}`)
@@ -179,6 +205,7 @@ export default class SleepySocketClient {
179
205
  client.#timeout = opts.timeout ?? 30_000
180
206
  client.#serverTimeout = opts.serverTimeout ?? 120_000
181
207
  client.#mountPath = opts.mountPath ?? ''
208
+ client.#ctx = opts.ctx
182
209
 
183
210
  if (opts.reconnect !== false) {
184
211
  client.#reconnectConfig = {
@@ -195,22 +222,55 @@ export default class SleepySocketClient {
195
222
  return client
196
223
  }
197
224
 
198
- #baseUrl (): string {
225
+ #getEndpointBaseUrl (): string {
199
226
  const protocol = this.#secure ? 'https' : 'http'
200
227
 
201
228
  return `${protocol}://${this.#host}:${this.#port}${this.#mountPath}`
202
229
  }
203
230
 
231
+ #getSocketUrl (ticket: string): string {
232
+ const protocol = this.#secure ? 'wss' : 'ws'
233
+ const authority = `${this.#host}:${this.#port}${this.#mountPath}`
234
+
235
+ return `${protocol}://${authority}/ws?ticket=${ticket}`
236
+ }
237
+
238
+ async #handleError (response: Response): Promise<void> {
239
+ const body = await response.json().catch(() => null)
240
+
241
+ if (!body) {
242
+ const msg = await response.text()
243
+
244
+ throw new Error(msg)
245
+ }
246
+
247
+ throw new HandshakeError(response.status, body)
248
+ }
249
+
204
250
  async #createTicket (): Promise<TicketData> {
205
- const response = await fetch(`${this.#baseUrl()}/ws`, {
251
+ const url = `${this.#getEndpointBaseUrl()}/ws`
252
+
253
+ const response = await fetch(url, {
206
254
  method: 'POST',
255
+ ...(this.#ctx ? {
256
+ headers: {
257
+ 'content-type': JSON_CONTENT_TYPE,
258
+ },
259
+ body: JSON.stringify({
260
+ data: this.#ctx,
261
+ }),
262
+ } : {}),
207
263
  })
208
264
 
265
+ if (!response.ok) {
266
+ await this.#handleError(response)
267
+ }
268
+
209
269
  return await response.json() as TicketData
210
270
  }
211
271
 
212
272
  async #reclaimTicket (): Promise<TicketData | null> {
213
- const url = `${this.#baseUrl()}/ws/${this.#id}`
273
+ const url = `${this.#getEndpointBaseUrl()}/ws/${this.#id}`
214
274
 
215
275
  const response = await fetch(url, {
216
276
  method: 'PUT',
@@ -220,7 +280,11 @@ export default class SleepySocketClient {
220
280
  })
221
281
 
222
282
  if (!response.ok) {
223
- return null
283
+ if ([401, 404].includes(response.status)) {
284
+ return null
285
+ }
286
+
287
+ await this.#handleError(response)
224
288
  }
225
289
 
226
290
  return await response.json() as TicketData
@@ -238,19 +302,12 @@ export default class SleepySocketClient {
238
302
  return this.#createTicket()
239
303
  }
240
304
 
241
- #socketUrl (ticket: string): string {
242
- const protocol = this.#secure ? 'wss' : 'ws'
243
- const authority = `${this.#host}:${this.#port}${this.#mountPath}`
244
-
245
- return `${protocol}://${authority}/ws?ticket=${ticket}`
246
- }
247
-
248
305
  #openSocket (
249
306
  res: TicketData,
250
307
  succeed: () => void,
251
308
  fail: (message: string) => void,
252
309
  ): void {
253
- const socket = new WebSocket(this.#socketUrl(res.ticket))
310
+ const socket = new WebSocket(this.#getSocketUrl(res.ticket))
254
311
 
255
312
  this.#socket = socket
256
313
  this.#connectionData = res.data
@@ -292,7 +349,9 @@ export default class SleepySocketClient {
292
349
  }
293
350
 
294
351
  #establish (): Promise<void> {
295
- return new Promise((resolve, reject) => {
352
+ this.#connecting = true
353
+
354
+ return new Promise<void>((resolve, reject) => {
296
355
  let settled = false
297
356
 
298
357
  const timer = setTimeout(() => {
@@ -329,8 +388,29 @@ export default class SleepySocketClient {
329
388
  }
330
389
 
331
390
  this.#requestTicket()
332
- .then(ticketData => this.#openSocket(ticketData, succeed, fail))
333
- .catch(() => fail('Connection failed.'))
391
+ .then(ticketData => this.#openSocket(
392
+ ticketData,
393
+ succeed,
394
+ fail,
395
+ ))
396
+ .catch(err => {
397
+ if (err instanceof HandshakeError) {
398
+ if (settled) {
399
+ return
400
+ }
401
+
402
+ settled = true
403
+
404
+ clearTimeout(timer)
405
+ reject(err)
406
+
407
+ return
408
+ }
409
+
410
+ fail('Connection failed.')
411
+ })
412
+ }).finally(() => {
413
+ this.#connecting = false
334
414
  })
335
415
  }
336
416
 
@@ -340,7 +420,7 @@ export default class SleepySocketClient {
340
420
  }
341
421
 
342
422
  this.#livenessTimer = setTimeout(() => {
343
- this.#socket?.close()
423
+ this.#socket?.close(CloseCode.Reaped)
344
424
  }, this.serverTimeout)
345
425
  }
346
426
 
@@ -352,18 +432,16 @@ export default class SleepySocketClient {
352
432
  this.#reconnectTimer = setTimeout(async () => {
353
433
  this.#reconnectTimer = null
354
434
 
355
- if (this.#closing) {
356
- return
357
- }
358
-
359
435
  try {
360
- await this.#establish()
361
- } catch {
362
- if (this.#closing) {
363
- return
436
+ if (!this.#closing) {
437
+ await this.#establish()
364
438
  }
439
+ } catch (err) {
440
+ const isHandshakeError = err instanceof HandshakeError
365
441
 
366
- this.#scheduleReconnect(attempt + 1, config)
442
+ if (!this.#closing && !isHandshakeError) {
443
+ this.#scheduleReconnect(attempt + 1, config)
444
+ }
367
445
  }
368
446
  }, delay)
369
447
  }
@@ -459,6 +537,8 @@ export default class SleepySocketClient {
459
537
 
460
538
  if (this.#livenessTimer) {
461
539
  clearTimeout(this.#livenessTimer)
540
+
541
+ this.#livenessTimer = null
462
542
  }
463
543
 
464
544
  for (const entry of this.#dispatchedMessages) {
@@ -469,19 +549,21 @@ export default class SleepySocketClient {
469
549
  this.#dispatchedMessages = []
470
550
  this.#socket = null
471
551
 
472
- if (this.#closing) {
473
- return
552
+ this.#emit('close', { code: event.code })
553
+
554
+ if (
555
+ !this.#closing &&
556
+ this.#reconnectConfig &&
557
+ event.code !== CloseCode.Ok
558
+ ) {
559
+ this.#scheduleReconnect(0, this.#reconnectConfig)
474
560
  }
475
561
 
476
- if (!this.#reconnectConfig) {
477
- if (!event.wasClean) {
478
- throw new Error(`Socket closed unexpectedly (code: ${event.code}).`)
479
- }
562
+ if (this.#closeResolve) {
563
+ this.#closeResolve()
480
564
 
481
- return
565
+ this.#closeResolve = null
482
566
  }
483
-
484
- this.#scheduleReconnect(0, this.#reconnectConfig)
485
567
  }
486
568
 
487
569
  #handleRequest (data: ResponseMessage): void {
@@ -562,7 +644,7 @@ export default class SleepySocketClient {
562
644
  }
563
645
  }
564
646
 
565
- #emit (event: string, payload: NotificationMessage): void {
647
+ #emit (event: string, payload: unknown): void {
566
648
  const handlers = this.#listeners.get(event)
567
649
 
568
650
  if (!handlers) {
@@ -590,9 +672,9 @@ export default class SleepySocketClient {
590
672
  this.#listeners.get(event)?.delete(handler)
591
673
  }
592
674
 
593
- async close (): Promise<void> {
675
+ close (): Promise<void> {
594
676
  if (this.#closing) {
595
- throw new Error('Socket is closed')
677
+ return Promise.reject(new Error('Socket is closed'))
596
678
  }
597
679
 
598
680
  this.#closing = true
@@ -602,19 +684,22 @@ export default class SleepySocketClient {
602
684
 
603
685
  if (this.#livenessTimer) {
604
686
  clearTimeout(this.#livenessTimer)
687
+
688
+ this.#livenessTimer = null
605
689
  }
606
690
 
607
691
  if (this.#reconnectTimer) {
608
692
  clearTimeout(this.#reconnectTimer)
609
- }
610
-
611
- this.#reconnectTimer = null
612
693
 
613
- if (this.#socket) {
614
- await this.#socket.close()
615
-
616
- this.#socket = null
694
+ this.#reconnectTimer = null
617
695
  }
696
+
697
+ return this.#socket
698
+ ? new Promise<void>(resolve => {
699
+ this.#closeResolve = resolve
700
+ this.#socket!.close(CloseCode.Ok)
701
+ })
702
+ : Promise.resolve()
618
703
  }
619
704
 
620
705
  head (route: string, opts: RequestOptions = {}): Promise<ResponseMessage> {
package/src/utils.ts CHANGED
@@ -69,6 +69,14 @@ export const StatusCode = {
69
69
 
70
70
  export type StatusCode = typeof StatusCode[keyof typeof StatusCode]
71
71
 
72
+ export const CloseCode = {
73
+ Ok: 1000,
74
+ Abnormal: 1006,
75
+ Reaped: 4999,
76
+ } as const
77
+
78
+ export type CloseCode = typeof CloseCode[keyof typeof CloseCode]
79
+
72
80
  export type IdGenerator = () => string
73
81
 
74
82
  export const defaultIdGenerator: IdGenerator = () => crypto.randomUUID()