@colyseus/uwebsockets-transport 0.18.0 → 0.18.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.
|
@@ -81,15 +81,7 @@ var uWebSocketClient = class {
|
|
|
81
81
|
);
|
|
82
82
|
}
|
|
83
83
|
enqueueRaw(data, options) {
|
|
84
|
-
|
|
85
|
-
this._afterNextPatchQueue.push([this, [data]]);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (this.state !== import_core.ClientState.JOINED) {
|
|
89
|
-
this._enqueuedMessages?.push(data);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
this.raw(data, options);
|
|
84
|
+
(0, import_core.enqueueClientRaw)(this, data, options);
|
|
93
85
|
}
|
|
94
86
|
raw(data, options, cb) {
|
|
95
87
|
if (this.readyState !== ReadyState.OPEN) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/uWebSocketClient.ts"],
|
|
4
|
-
"sourcesContent": ["import EventEmitter from 'events';\nimport uWebSockets from 'uWebSockets.js';\n\nimport { getMessageBytes, Protocol, type Client, type ClientPrivate, ClientState, type ISendOptions, logger, debugMessage } from '@colyseus/core';\n\nexport class uWebSocketWrapper extends EventEmitter {\n public ws: uWebSockets.WebSocket<any>;\n constructor(ws: uWebSockets.WebSocket<any>) {\n super();\n this.ws = ws;\n }\n}\n\nexport const ReadyState = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n} as const;\nexport type ReadyState = (typeof ReadyState)[keyof typeof ReadyState];\n\nexport class uWebSocketClient implements Client, ClientPrivate {\n '~messages': any;\n\n public id: string;\n public _ref: uWebSocketWrapper;\n\n public sessionId: string;\n public state: ClientState = ClientState.JOINING;\n public readyState: number = ReadyState.OPEN;\n public reconnectionToken: string;\n\n public _enqueuedMessages: any[] = [];\n public
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AACzB,yBAAwB;AAExB,
|
|
4
|
+
"sourcesContent": ["import EventEmitter from 'events';\nimport uWebSockets from 'uWebSockets.js';\n\nimport { getMessageBytes, Protocol, type Client, type ClientPrivate, ClientState, type ISendOptions, logger, debugMessage, enqueueClientRaw } from '@colyseus/core';\n\nexport class uWebSocketWrapper extends EventEmitter {\n public ws: uWebSockets.WebSocket<any>;\n constructor(ws: uWebSockets.WebSocket<any>) {\n super();\n this.ws = ws;\n }\n}\n\nexport const ReadyState = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n} as const;\nexport type ReadyState = (typeof ReadyState)[keyof typeof ReadyState];\n\nexport class uWebSocketClient implements Client, ClientPrivate {\n '~messages': any;\n\n public id: string;\n public _ref: uWebSocketWrapper;\n\n public sessionId: string;\n public state: ClientState = ClientState.JOINING;\n public readyState: number = ReadyState.OPEN;\n public reconnectionToken: string;\n\n public _enqueuedMessages: any[] = [];\n public _reconnectionToken: string;\n public _joinedAt: number;\n\n constructor(id: string, _ref: uWebSocketWrapper) {\n this.id = this.sessionId = id;\n this._ref = _ref;\n _ref.on('close', () => this.readyState = ReadyState.CLOSED);\n }\n\n get ref() { return this._ref; }\n set ref(_ref: uWebSocketWrapper) {\n this._ref = _ref;\n this.readyState = ReadyState.OPEN;\n }\n\n public sendBytes(type: string | number, bytes: Buffer | Uint8Array, options?: ISendOptions) {\n debugMessage(\"send bytes(to %s): '%s' -> %j\", this.sessionId, type, bytes);\n\n this.enqueueRaw(\n getMessageBytes.raw(Protocol.ROOM_DATA_BYTES, type, undefined, bytes),\n options,\n );\n }\n\n public send(messageOrType: any, messageOrOptions?: any | ISendOptions, options?: ISendOptions) {\n debugMessage(\"send(to %s): '%s' -> %O\", this.sessionId, messageOrType, messageOrOptions);\n\n this.enqueueRaw(\n getMessageBytes.raw(Protocol.ROOM_DATA, messageOrType, messageOrOptions),\n options,\n );\n }\n\n public enqueueRaw(data: Uint8Array | Buffer, options?: ISendOptions) {\n enqueueClientRaw(this, data, options);\n }\n\n public raw(data: Uint8Array | Buffer, options?: ISendOptions, cb?: (err?: Error) => void) {\n // skip if client not open\n if (this.readyState !== ReadyState.OPEN) {\n return;\n }\n\n try {\n this._ref.ws.send(data, true, false);\n } catch (e: any) {\n // uWS throws \"Invalid access of closed uWS.WebSocket\" if the socket\n // closed between the readyState check and the send() call.\n this.readyState = ReadyState.CLOSED;\n }\n }\n\n public error(code: number, message: string = '', cb?: (err?: Error) => void) {\n this.raw(getMessageBytes[Protocol.ERROR](code, message));\n\n if (cb) {\n // delay callback execution - uWS doesn't acknowledge when the message was sent\n // (same API as \"ws\" transport)\n process.nextTick(cb);\n }\n }\n\n public leave(code?: number, data?: string) {\n if (this.readyState !== ReadyState.OPEN) {\n // connection already closed. ignore.\n return;\n }\n\n this.readyState = ReadyState.CLOSING;\n\n if (code !== undefined) {\n this._ref.ws.end(code, data);\n } else {\n this._ref.ws.close();\n }\n }\n\n public close(code?: number, data?: string) {\n logger.warn('DEPRECATION WARNING: use client.leave() instead of client.close()');\n try {\n throw new Error();\n } catch (e: any) {\n logger.info(e.stack);\n }\n this.leave(code, data);\n }\n\n public toJSON() {\n return { sessionId: this.sessionId, readyState: this.readyState };\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AACzB,yBAAwB;AAExB,kBAAmJ;AAE5I,IAAM,oBAAN,cAAgC,cAAAA,QAAa;AAAA,EAElD,YAAY,IAAgC;AAC1C,UAAM;AACN,SAAK,KAAK;AAAA,EACZ;AACF;AAEO,IAAM,aAAa;AAAA,EACxB,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AACV;AAGO,IAAM,mBAAN,MAAwD;AAAA,EAe7D,YAAY,IAAY,MAAyB;AARjD,SAAO,QAAqB,wBAAY;AACxC,SAAO,aAAqB,WAAW;AAGvC,SAAO,oBAA2B,CAAC;AAKjC,SAAK,KAAK,KAAK,YAAY;AAC3B,SAAK,OAAO;AACZ,SAAK,GAAG,SAAS,MAAM,KAAK,aAAa,WAAW,MAAM;AAAA,EAC5D;AAAA,EAEA,IAAI,MAAM;AAAE,WAAO,KAAK;AAAA,EAAM;AAAA,EAC9B,IAAI,IAAI,MAAyB;AAC/B,SAAK,OAAO;AACZ,SAAK,aAAa,WAAW;AAAA,EAC/B;AAAA,EAEO,UAAU,MAAuB,OAA4B,SAAwB;AAC1F,kCAAa,iCAAiC,KAAK,WAAW,MAAM,KAAK;AAEzE,SAAK;AAAA,MACH,4BAAgB,IAAI,qBAAS,iBAAiB,MAAM,QAAW,KAAK;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AAAA,EAEO,KAAK,eAAoB,kBAAuC,SAAwB;AAC7F,kCAAa,2BAA2B,KAAK,WAAW,eAAe,gBAAgB;AAEvF,SAAK;AAAA,MACH,4BAAgB,IAAI,qBAAS,WAAW,eAAe,gBAAgB;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAW,MAA2B,SAAwB;AACnE,sCAAiB,MAAM,MAAM,OAAO;AAAA,EACtC;AAAA,EAEO,IAAI,MAA2B,SAAwB,IAA4B;AAExF,QAAI,KAAK,eAAe,WAAW,MAAM;AACvC;AAAA,IACF;AAEA,QAAI;AACF,WAAK,KAAK,GAAG,KAAK,MAAM,MAAM,KAAK;AAAA,IACrC,SAAS,GAAQ;AAGf,WAAK,aAAa,WAAW;AAAA,IAC/B;AAAA,EACF;AAAA,EAEO,MAAM,MAAc,UAAkB,IAAI,IAA4B;AAC3E,SAAK,IAAI,4BAAgB,qBAAS,KAAK,EAAE,MAAM,OAAO,CAAC;AAEvD,QAAI,IAAI;AAGN,cAAQ,SAAS,EAAE;AAAA,IACrB;AAAA,EACF;AAAA,EAEO,MAAM,MAAe,MAAe;AACzC,QAAI,KAAK,eAAe,WAAW,MAAM;AAEvC;AAAA,IACF;AAEA,SAAK,aAAa,WAAW;AAE7B,QAAI,SAAS,QAAW;AACtB,WAAK,KAAK,GAAG,IAAI,MAAM,IAAI;AAAA,IAC7B,OAAO;AACL,WAAK,KAAK,GAAG,MAAM;AAAA,IACrB;AAAA,EACF;AAAA,EAEO,MAAM,MAAe,MAAe;AACzC,uBAAO,KAAK,mEAAmE;AAC/E,QAAI;AACF,YAAM,IAAI,MAAM;AAAA,IAClB,SAAS,GAAQ;AACf,yBAAO,KAAK,EAAE,KAAK;AAAA,IACrB;AACA,SAAK,MAAM,MAAM,IAAI;AAAA,EACvB;AAAA,EAEO,SAAS;AACd,WAAO,EAAE,WAAW,KAAK,WAAW,YAAY,KAAK,WAAW;AAAA,EAClE;AACF;",
|
|
6
6
|
"names": ["EventEmitter"]
|
|
7
7
|
}
|
|
@@ -21,7 +21,6 @@ export declare class uWebSocketClient implements Client, ClientPrivate {
|
|
|
21
21
|
readyState: number;
|
|
22
22
|
reconnectionToken: string;
|
|
23
23
|
_enqueuedMessages: any[];
|
|
24
|
-
_afterNextPatchQueue: any;
|
|
25
24
|
_reconnectionToken: string;
|
|
26
25
|
_joinedAt: number;
|
|
27
26
|
constructor(id: string, _ref: uWebSocketWrapper);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// packages/transport/uwebsockets-transport/src/uWebSocketClient.ts
|
|
2
2
|
import EventEmitter from "events";
|
|
3
3
|
import "uWebSockets.js";
|
|
4
|
-
import { getMessageBytes, Protocol, ClientState, logger, debugMessage } from "@colyseus/core";
|
|
4
|
+
import { getMessageBytes, Protocol, ClientState, logger, debugMessage, enqueueClientRaw } from "@colyseus/core";
|
|
5
5
|
var uWebSocketWrapper = class extends EventEmitter {
|
|
6
6
|
constructor(ws) {
|
|
7
7
|
super();
|
|
@@ -45,15 +45,7 @@ var uWebSocketClient = class {
|
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
47
|
enqueueRaw(data, options) {
|
|
48
|
-
|
|
49
|
-
this._afterNextPatchQueue.push([this, [data]]);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (this.state !== ClientState.JOINED) {
|
|
53
|
-
this._enqueuedMessages?.push(data);
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
this.raw(data, options);
|
|
48
|
+
enqueueClientRaw(this, data, options);
|
|
57
49
|
}
|
|
58
50
|
raw(data, options, cb) {
|
|
59
51
|
if (this.readyState !== ReadyState.OPEN) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/uWebSocketClient.ts"],
|
|
4
|
-
"sourcesContent": ["import EventEmitter from 'events';\nimport uWebSockets from 'uWebSockets.js';\n\nimport { getMessageBytes, Protocol, type Client, type ClientPrivate, ClientState, type ISendOptions, logger, debugMessage } from '@colyseus/core';\n\nexport class uWebSocketWrapper extends EventEmitter {\n public ws: uWebSockets.WebSocket<any>;\n constructor(ws: uWebSockets.WebSocket<any>) {\n super();\n this.ws = ws;\n }\n}\n\nexport const ReadyState = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n} as const;\nexport type ReadyState = (typeof ReadyState)[keyof typeof ReadyState];\n\nexport class uWebSocketClient implements Client, ClientPrivate {\n '~messages': any;\n\n public id: string;\n public _ref: uWebSocketWrapper;\n\n public sessionId: string;\n public state: ClientState = ClientState.JOINING;\n public readyState: number = ReadyState.OPEN;\n public reconnectionToken: string;\n\n public _enqueuedMessages: any[] = [];\n public
|
|
5
|
-
"mappings": ";AAAA,OAAO,kBAAkB;AACzB,OAAwB;AAExB,SAAS,iBAAiB,UAA2C,aAAgC,QAAQ,
|
|
4
|
+
"sourcesContent": ["import EventEmitter from 'events';\nimport uWebSockets from 'uWebSockets.js';\n\nimport { getMessageBytes, Protocol, type Client, type ClientPrivate, ClientState, type ISendOptions, logger, debugMessage, enqueueClientRaw } from '@colyseus/core';\n\nexport class uWebSocketWrapper extends EventEmitter {\n public ws: uWebSockets.WebSocket<any>;\n constructor(ws: uWebSockets.WebSocket<any>) {\n super();\n this.ws = ws;\n }\n}\n\nexport const ReadyState = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n} as const;\nexport type ReadyState = (typeof ReadyState)[keyof typeof ReadyState];\n\nexport class uWebSocketClient implements Client, ClientPrivate {\n '~messages': any;\n\n public id: string;\n public _ref: uWebSocketWrapper;\n\n public sessionId: string;\n public state: ClientState = ClientState.JOINING;\n public readyState: number = ReadyState.OPEN;\n public reconnectionToken: string;\n\n public _enqueuedMessages: any[] = [];\n public _reconnectionToken: string;\n public _joinedAt: number;\n\n constructor(id: string, _ref: uWebSocketWrapper) {\n this.id = this.sessionId = id;\n this._ref = _ref;\n _ref.on('close', () => this.readyState = ReadyState.CLOSED);\n }\n\n get ref() { return this._ref; }\n set ref(_ref: uWebSocketWrapper) {\n this._ref = _ref;\n this.readyState = ReadyState.OPEN;\n }\n\n public sendBytes(type: string | number, bytes: Buffer | Uint8Array, options?: ISendOptions) {\n debugMessage(\"send bytes(to %s): '%s' -> %j\", this.sessionId, type, bytes);\n\n this.enqueueRaw(\n getMessageBytes.raw(Protocol.ROOM_DATA_BYTES, type, undefined, bytes),\n options,\n );\n }\n\n public send(messageOrType: any, messageOrOptions?: any | ISendOptions, options?: ISendOptions) {\n debugMessage(\"send(to %s): '%s' -> %O\", this.sessionId, messageOrType, messageOrOptions);\n\n this.enqueueRaw(\n getMessageBytes.raw(Protocol.ROOM_DATA, messageOrType, messageOrOptions),\n options,\n );\n }\n\n public enqueueRaw(data: Uint8Array | Buffer, options?: ISendOptions) {\n enqueueClientRaw(this, data, options);\n }\n\n public raw(data: Uint8Array | Buffer, options?: ISendOptions, cb?: (err?: Error) => void) {\n // skip if client not open\n if (this.readyState !== ReadyState.OPEN) {\n return;\n }\n\n try {\n this._ref.ws.send(data, true, false);\n } catch (e: any) {\n // uWS throws \"Invalid access of closed uWS.WebSocket\" if the socket\n // closed between the readyState check and the send() call.\n this.readyState = ReadyState.CLOSED;\n }\n }\n\n public error(code: number, message: string = '', cb?: (err?: Error) => void) {\n this.raw(getMessageBytes[Protocol.ERROR](code, message));\n\n if (cb) {\n // delay callback execution - uWS doesn't acknowledge when the message was sent\n // (same API as \"ws\" transport)\n process.nextTick(cb);\n }\n }\n\n public leave(code?: number, data?: string) {\n if (this.readyState !== ReadyState.OPEN) {\n // connection already closed. ignore.\n return;\n }\n\n this.readyState = ReadyState.CLOSING;\n\n if (code !== undefined) {\n this._ref.ws.end(code, data);\n } else {\n this._ref.ws.close();\n }\n }\n\n public close(code?: number, data?: string) {\n logger.warn('DEPRECATION WARNING: use client.leave() instead of client.close()');\n try {\n throw new Error();\n } catch (e: any) {\n logger.info(e.stack);\n }\n this.leave(code, data);\n }\n\n public toJSON() {\n return { sessionId: this.sessionId, readyState: this.readyState };\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,OAAO,kBAAkB;AACzB,OAAwB;AAExB,SAAS,iBAAiB,UAA2C,aAAgC,QAAQ,cAAc,wBAAwB;AAE5I,IAAM,oBAAN,cAAgC,aAAa;AAAA,EAElD,YAAY,IAAgC;AAC1C,UAAM;AACN,SAAK,KAAK;AAAA,EACZ;AACF;AAEO,IAAM,aAAa;AAAA,EACxB,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AACV;AAGO,IAAM,mBAAN,MAAwD;AAAA,EAe7D,YAAY,IAAY,MAAyB;AARjD,SAAO,QAAqB,YAAY;AACxC,SAAO,aAAqB,WAAW;AAGvC,SAAO,oBAA2B,CAAC;AAKjC,SAAK,KAAK,KAAK,YAAY;AAC3B,SAAK,OAAO;AACZ,SAAK,GAAG,SAAS,MAAM,KAAK,aAAa,WAAW,MAAM;AAAA,EAC5D;AAAA,EAEA,IAAI,MAAM;AAAE,WAAO,KAAK;AAAA,EAAM;AAAA,EAC9B,IAAI,IAAI,MAAyB;AAC/B,SAAK,OAAO;AACZ,SAAK,aAAa,WAAW;AAAA,EAC/B;AAAA,EAEO,UAAU,MAAuB,OAA4B,SAAwB;AAC1F,iBAAa,iCAAiC,KAAK,WAAW,MAAM,KAAK;AAEzE,SAAK;AAAA,MACH,gBAAgB,IAAI,SAAS,iBAAiB,MAAM,QAAW,KAAK;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AAAA,EAEO,KAAK,eAAoB,kBAAuC,SAAwB;AAC7F,iBAAa,2BAA2B,KAAK,WAAW,eAAe,gBAAgB;AAEvF,SAAK;AAAA,MACH,gBAAgB,IAAI,SAAS,WAAW,eAAe,gBAAgB;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAW,MAA2B,SAAwB;AACnE,qBAAiB,MAAM,MAAM,OAAO;AAAA,EACtC;AAAA,EAEO,IAAI,MAA2B,SAAwB,IAA4B;AAExF,QAAI,KAAK,eAAe,WAAW,MAAM;AACvC;AAAA,IACF;AAEA,QAAI;AACF,WAAK,KAAK,GAAG,KAAK,MAAM,MAAM,KAAK;AAAA,IACrC,SAAS,GAAQ;AAGf,WAAK,aAAa,WAAW;AAAA,IAC/B;AAAA,EACF;AAAA,EAEO,MAAM,MAAc,UAAkB,IAAI,IAA4B;AAC3E,SAAK,IAAI,gBAAgB,SAAS,KAAK,EAAE,MAAM,OAAO,CAAC;AAEvD,QAAI,IAAI;AAGN,cAAQ,SAAS,EAAE;AAAA,IACrB;AAAA,EACF;AAAA,EAEO,MAAM,MAAe,MAAe;AACzC,QAAI,KAAK,eAAe,WAAW,MAAM;AAEvC;AAAA,IACF;AAEA,SAAK,aAAa,WAAW;AAE7B,QAAI,SAAS,QAAW;AACtB,WAAK,KAAK,GAAG,IAAI,MAAM,IAAI;AAAA,IAC7B,OAAO;AACL,WAAK,KAAK,GAAG,MAAM;AAAA,IACrB;AAAA,EACF;AAAA,EAEO,MAAM,MAAe,MAAe;AACzC,WAAO,KAAK,mEAAmE;AAC/E,QAAI;AACF,YAAM,IAAI,MAAM;AAAA,IAClB,SAAS,GAAQ;AACf,aAAO,KAAK,EAAE,KAAK;AAAA,IACrB;AACA,SAAK,MAAM,MAAM,IAAI;AAAA,EACvB;AAAA,EAEO,SAAS;AACd,WAAO,EAAE,WAAW,KAAK,WAAW,YAAY,KAAK,WAAW;AAAA,EAClE;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@colyseus/uwebsockets-transport",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"input": "./src/index.ts",
|
|
6
6
|
"main": "./build/index.cjs",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"uwebsockets-express": "^2.0.1",
|
|
28
|
-
"@colyseus/core": "^0.18.
|
|
28
|
+
"@colyseus/core": "^0.18.1"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@colyseus/core": "0.18.x",
|
package/src/uWebSocketClient.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
import uWebSockets from 'uWebSockets.js';
|
|
3
3
|
|
|
4
|
-
import { getMessageBytes, Protocol, type Client, type ClientPrivate, ClientState, type ISendOptions, logger, debugMessage } from '@colyseus/core';
|
|
4
|
+
import { getMessageBytes, Protocol, type Client, type ClientPrivate, ClientState, type ISendOptions, logger, debugMessage, enqueueClientRaw } from '@colyseus/core';
|
|
5
5
|
|
|
6
6
|
export class uWebSocketWrapper extends EventEmitter {
|
|
7
7
|
public ws: uWebSockets.WebSocket<any>;
|
|
@@ -31,7 +31,6 @@ export class uWebSocketClient implements Client, ClientPrivate {
|
|
|
31
31
|
public reconnectionToken: string;
|
|
32
32
|
|
|
33
33
|
public _enqueuedMessages: any[] = [];
|
|
34
|
-
public _afterNextPatchQueue;
|
|
35
34
|
public _reconnectionToken: string;
|
|
36
35
|
public _joinedAt: number;
|
|
37
36
|
|
|
@@ -66,22 +65,7 @@ export class uWebSocketClient implements Client, ClientPrivate {
|
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
public enqueueRaw(data: Uint8Array | Buffer, options?: ISendOptions) {
|
|
69
|
-
|
|
70
|
-
if (options?.afterNextPatch) {
|
|
71
|
-
this._afterNextPatchQueue.push([this, [data]]);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (this.state !== ClientState.JOINED) {
|
|
76
|
-
// sending messages during `onJoin` or `onReconnect`.
|
|
77
|
-
// - the client-side cannot register "onMessage" callbacks at this point.
|
|
78
|
-
// - enqueue the messages to be send after JOIN_ROOM message has been sent
|
|
79
|
-
// - create a new buffer for enqueued messages, as the underlying buffer might be modified
|
|
80
|
-
this._enqueuedMessages?.push(data);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
this.raw(data, options);
|
|
68
|
+
enqueueClientRaw(this, data, options);
|
|
85
69
|
}
|
|
86
70
|
|
|
87
71
|
public raw(data: Uint8Array | Buffer, options?: ISendOptions, cb?: (err?: Error) => void) {
|