@colyseus/core 0.15.41 → 0.16.0-preview.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/build/IPC.js.map +1 -1
- package/build/IPC.mjs.map +1 -1
- package/build/MatchMaker.d.ts +1 -2
- package/build/MatchMaker.js +3 -13
- package/build/MatchMaker.js.map +2 -2
- package/build/MatchMaker.mjs +3 -12
- package/build/MatchMaker.mjs.map +2 -2
- package/build/Protocol.d.ts +1 -5
- package/build/Protocol.js +10 -41
- package/build/Protocol.js.map +2 -2
- package/build/Protocol.mjs +10 -40
- package/build/Protocol.mjs.map +2 -2
- package/build/Room.d.ts +13 -16
- package/build/Room.js +4 -22
- package/build/Room.js.map +3 -3
- package/build/Room.mjs +5 -23
- package/build/Room.mjs.map +2 -2
- package/build/Transport.d.ts +13 -6
- package/build/Transport.js.map +2 -2
- package/build/Transport.mjs.map +2 -2
- package/build/index.d.ts +1 -1
- package/build/index.js +2 -2
- package/build/index.js.map +2 -2
- package/build/index.mjs +2 -2
- package/build/index.mjs.map +2 -2
- package/build/presence/LocalPresence.d.ts +1 -1
- package/build/presence/LocalPresence.js.map +2 -2
- package/build/presence/LocalPresence.mjs.map +2 -2
- package/build/rooms/RelayRoom.js +2 -3
- package/build/rooms/RelayRoom.js.map +2 -2
- package/build/rooms/RelayRoom.mjs +3 -4
- package/build/rooms/RelayRoom.mjs.map +2 -2
- package/build/serializer/SchemaSerializer.d.ts +9 -6
- package/build/serializer/SchemaSerializer.js +58 -43
- package/build/serializer/SchemaSerializer.js.map +2 -2
- package/build/serializer/SchemaSerializer.mjs +59 -44
- package/build/serializer/SchemaSerializer.mjs.map +2 -2
- package/build/serializer/Serializer.d.ts +2 -1
- package/build/serializer/Serializer.js.map +1 -1
- package/build/utils/Utils.d.ts +1 -8
- package/build/utils/Utils.js +3 -3
- package/build/utils/Utils.js.map +2 -2
- package/build/utils/Utils.mjs +2 -2
- package/build/utils/Utils.mjs.map +2 -2
- package/package.json +4 -5
package/build/Protocol.js
CHANGED
|
@@ -21,13 +21,11 @@ __export(Protocol_exports, {
|
|
|
21
21
|
IpcProtocol: () => IpcProtocol,
|
|
22
22
|
Protocol: () => Protocol,
|
|
23
23
|
getMessageBytes: () => getMessageBytes,
|
|
24
|
-
utf8Length: () => utf8Length,
|
|
25
24
|
utf8Write: () => utf8Write
|
|
26
25
|
});
|
|
27
26
|
module.exports = __toCommonJS(Protocol_exports);
|
|
28
27
|
var import_msgpackr = require("msgpackr");
|
|
29
28
|
var import_schema = require("@colyseus/schema");
|
|
30
|
-
var import_Logger = require("./Logger");
|
|
31
29
|
var Protocol = /* @__PURE__ */ ((Protocol2) => {
|
|
32
30
|
Protocol2[Protocol2["JOIN_ROOM"] = 10] = "JOIN_ROOM";
|
|
33
31
|
Protocol2[Protocol2["ERROR"] = 11] = "ERROR";
|
|
@@ -35,7 +33,6 @@ var Protocol = /* @__PURE__ */ ((Protocol2) => {
|
|
|
35
33
|
Protocol2[Protocol2["ROOM_DATA"] = 13] = "ROOM_DATA";
|
|
36
34
|
Protocol2[Protocol2["ROOM_STATE"] = 14] = "ROOM_STATE";
|
|
37
35
|
Protocol2[Protocol2["ROOM_STATE_PATCH"] = 15] = "ROOM_STATE_PATCH";
|
|
38
|
-
Protocol2[Protocol2["ROOM_DATA_SCHEMA"] = 16] = "ROOM_DATA_SCHEMA";
|
|
39
36
|
Protocol2[Protocol2["ROOM_DATA_BYTES"] = 17] = "ROOM_DATA_BYTES";
|
|
40
37
|
Protocol2[Protocol2["WS_CLOSE_NORMAL"] = 1e3] = "WS_CLOSE_NORMAL";
|
|
41
38
|
Protocol2[Protocol2["WS_CLOSE_GOING_AWAY"] = 1001] = "WS_CLOSE_GOING_AWAY";
|
|
@@ -66,8 +63,8 @@ var IpcProtocol = /* @__PURE__ */ ((IpcProtocol2) => {
|
|
|
66
63
|
const getMessageBytes = {
|
|
67
64
|
[10 /* JOIN_ROOM */]: (reconnectionToken, serializerId, handshake) => {
|
|
68
65
|
let offset = 0;
|
|
69
|
-
const reconnectionTokenLength =
|
|
70
|
-
const serializerIdLength =
|
|
66
|
+
const reconnectionTokenLength = Buffer.byteLength(reconnectionToken, "utf8");
|
|
67
|
+
const serializerIdLength = Buffer.byteLength(serializerId, "utf8");
|
|
71
68
|
const handshakeLength = handshake ? handshake.length : 0;
|
|
72
69
|
const buff = Buffer.allocUnsafe(1 + reconnectionTokenLength + serializerIdLength + handshakeLength);
|
|
73
70
|
buff.writeUInt8(10 /* JOIN_ROOM */, offset++);
|
|
@@ -83,31 +80,22 @@ const getMessageBytes = {
|
|
|
83
80
|
return buff;
|
|
84
81
|
},
|
|
85
82
|
[11 /* ERROR */]: (code, message = "") => {
|
|
83
|
+
const it = { offset: 0 };
|
|
86
84
|
const bytes = [11 /* ERROR */];
|
|
87
|
-
import_schema.encode.number(bytes, code);
|
|
88
|
-
import_schema.encode.string(bytes, message);
|
|
85
|
+
import_schema.encode.number(bytes, code, it);
|
|
86
|
+
import_schema.encode.string(bytes, message, it);
|
|
89
87
|
return bytes;
|
|
90
88
|
},
|
|
91
89
|
[14 /* ROOM_STATE */]: (bytes) => {
|
|
92
90
|
return [14 /* ROOM_STATE */, ...bytes];
|
|
93
91
|
},
|
|
94
|
-
[16 /* ROOM_DATA_SCHEMA */]: (message) => {
|
|
95
|
-
const typeid = message.constructor._typeid;
|
|
96
|
-
if (typeid === void 0) {
|
|
97
|
-
import_Logger.logger.warn("Starting at colyseus >= 0.13 You must provide a type and message when calling `this.broadcast()` or `client.send()`. Please see: https://docs.colyseus.io/migrating/0.13/");
|
|
98
|
-
throw new Error(`an instance of Schema was expected, but ${JSON.stringify(message)} has been provided.`);
|
|
99
|
-
}
|
|
100
|
-
return [16 /* ROOM_DATA_SCHEMA */, typeid, ...message.encodeAll()];
|
|
101
|
-
},
|
|
102
92
|
raw: (code, type, message, rawMessage) => {
|
|
93
|
+
const it = { offset: 1 };
|
|
103
94
|
const initialBytes = [code];
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
import_schema.encode.string(initialBytes, type);
|
|
107
|
-
} else if (messageType === "number") {
|
|
108
|
-
import_schema.encode.number(initialBytes, type);
|
|
95
|
+
if (typeof type === "string") {
|
|
96
|
+
import_schema.encode.string(initialBytes, type, it);
|
|
109
97
|
} else {
|
|
110
|
-
|
|
98
|
+
import_schema.encode.number(initialBytes, type, it);
|
|
111
99
|
}
|
|
112
100
|
let arr;
|
|
113
101
|
if (message !== void 0) {
|
|
@@ -126,7 +114,7 @@ const getMessageBytes = {
|
|
|
126
114
|
}
|
|
127
115
|
};
|
|
128
116
|
function utf8Write(buff, offset, str = "") {
|
|
129
|
-
buff[offset++] =
|
|
117
|
+
buff[offset++] = Buffer.byteLength(str, "utf8") - 1;
|
|
130
118
|
let c = 0;
|
|
131
119
|
for (let i = 0, l = str.length; i < l; i++) {
|
|
132
120
|
c = str.charCodeAt(i);
|
|
@@ -149,30 +137,11 @@ function utf8Write(buff, offset, str = "") {
|
|
|
149
137
|
}
|
|
150
138
|
}
|
|
151
139
|
}
|
|
152
|
-
function utf8Length(str = "") {
|
|
153
|
-
let c = 0;
|
|
154
|
-
let length = 0;
|
|
155
|
-
for (let i = 0, l = str.length; i < l; i++) {
|
|
156
|
-
c = str.charCodeAt(i);
|
|
157
|
-
if (c < 128) {
|
|
158
|
-
length += 1;
|
|
159
|
-
} else if (c < 2048) {
|
|
160
|
-
length += 2;
|
|
161
|
-
} else if (c < 55296 || c >= 57344) {
|
|
162
|
-
length += 3;
|
|
163
|
-
} else {
|
|
164
|
-
i++;
|
|
165
|
-
length += 4;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return length + 1;
|
|
169
|
-
}
|
|
170
140
|
// Annotate the CommonJS export names for ESM import in node:
|
|
171
141
|
0 && (module.exports = {
|
|
172
142
|
ErrorCode,
|
|
173
143
|
IpcProtocol,
|
|
174
144
|
Protocol,
|
|
175
145
|
getMessageBytes,
|
|
176
|
-
utf8Length,
|
|
177
146
|
utf8Write
|
|
178
147
|
});
|
package/build/Protocol.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/Protocol.ts"],
|
|
4
|
-
"sourcesContent": ["import { pack } from 'msgpackr';\nimport { encode,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
4
|
+
"sourcesContent": ["import { pack } from 'msgpackr';\nimport { encode, Iterator } from '@colyseus/schema';\n\n// Colyseus protocol codes range between 0~100\nexport enum Protocol {\n // Room-related (10~19)\n JOIN_ROOM = 10,\n ERROR = 11,\n LEAVE_ROOM = 12,\n ROOM_DATA = 13,\n ROOM_STATE = 14,\n ROOM_STATE_PATCH = 15,\n // ROOM_DATA_SCHEMA = 16, // DEPRECATED: used to send schema instances via room.send()\n ROOM_DATA_BYTES = 17,\n\n // WebSocket close codes (https://github.com/Luka967/websocket-close-codes)\n WS_CLOSE_NORMAL = 1000,\n WS_CLOSE_GOING_AWAY = 1001,\n\n // WebSocket error codes\n WS_CLOSE_CONSENTED = 4000,\n WS_CLOSE_WITH_ERROR = 4002,\n WS_CLOSE_DEVMODE_RESTART = 4010,\n\n WS_SERVER_DISCONNECT = 4201,\n WS_TOO_MANY_CLIENTS = 4202,\n}\n\nexport enum ErrorCode {\n // MatchMaking Error Codes\n MATCHMAKE_NO_HANDLER = 4210,\n MATCHMAKE_INVALID_CRITERIA = 4211,\n MATCHMAKE_INVALID_ROOM_ID = 4212,\n MATCHMAKE_UNHANDLED = 4213, // generic exception during onCreate/onJoin\n MATCHMAKE_EXPIRED = 4214, // generic exception during onCreate/onJoin\n\n AUTH_FAILED = 4215,\n APPLICATION_ERROR = 4216,\n\n INVALID_PAYLOAD = 4217,\n}\n\n// Inter-process communication protocol\nexport enum IpcProtocol {\n SUCCESS = 0,\n ERROR = 1,\n TIMEOUT = 2,\n}\n\nexport const getMessageBytes = {\n [Protocol.JOIN_ROOM]: (reconnectionToken: string, serializerId: string, handshake?: number[] | Buffer) => {\n let offset = 0;\n\n const reconnectionTokenLength = Buffer.byteLength(reconnectionToken, \"utf8\");\n const serializerIdLength = Buffer.byteLength(serializerId, \"utf8\");\n const handshakeLength = (handshake) ? handshake.length : 0;\n\n const buff = Buffer.allocUnsafe(1 + reconnectionTokenLength + serializerIdLength + handshakeLength);\n buff.writeUInt8(Protocol.JOIN_ROOM, offset++);\n\n utf8Write(buff, offset, reconnectionToken);\n offset += reconnectionTokenLength;\n\n utf8Write(buff, offset, serializerId);\n offset += serializerIdLength;\n\n if (handshake) {\n for (let i = 0, l = handshake.length; i < l; i++) {\n buff.writeUInt8(handshake[i], offset++);\n }\n }\n\n return buff;\n },\n\n [Protocol.ERROR]: (code: number, message: string = '') => {\n const it: Iterator = { offset: 0 };\n const bytes = [Protocol.ERROR];\n\n encode.number(bytes, code, it);\n encode.string(bytes, message, it);\n\n return bytes;\n },\n\n [Protocol.ROOM_STATE]: (bytes: number[]) => {\n return [Protocol.ROOM_STATE, ...bytes];\n },\n\n raw: (code: Protocol, type: string | number, message?: any, rawMessage?: ArrayLike<number> | Buffer) => {\n const it: Iterator = { offset: 1 };\n const initialBytes: number[] = [code];\n\n if (typeof (type) === 'string') {\n encode.string(initialBytes, type as string, it);\n\n } else {\n encode.number(initialBytes, type, it);\n }\n\n let arr: Uint8Array;\n\n if (message !== undefined) {\n const encoded = pack(message);\n arr = new Uint8Array(initialBytes.length + encoded.byteLength);\n arr.set(new Uint8Array(initialBytes), 0);\n arr.set(new Uint8Array(encoded), initialBytes.length);\n\n } else if (rawMessage !== undefined) {\n arr = new Uint8Array(initialBytes.length + ((rawMessage as Buffer).byteLength || rawMessage.length));\n arr.set(new Uint8Array(initialBytes), 0);\n arr.set(new Uint8Array(rawMessage), initialBytes.length);\n\n } else {\n arr = new Uint8Array(initialBytes);\n }\n\n return arr;\n },\n\n};\n\nexport function utf8Write(buff: Buffer, offset: number, str: string = '') {\n buff[offset++] = Buffer.byteLength(str, \"utf8\") - 1;\n\n let c = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n buff[offset++] = c;\n } else if (c < 0x800) {\n buff[offset++] = 0xc0 | (c >> 6);\n buff[offset++] = 0x80 | (c & 0x3f);\n } else if (c < 0xd800 || c >= 0xe000) {\n buff[offset++] = 0xe0 | (c >> 12);\n buff[offset++] = 0x80 | (c >> 6) & 0x3f;\n buff[offset++] = 0x80 | (c & 0x3f);\n } else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n buff[offset++] = 0xf0 | (c >> 18);\n buff[offset++] = 0x80 | (c >> 12) & 0x3f;\n buff[offset++] = 0x80 | (c >> 6) & 0x3f;\n buff[offset++] = 0x80 | (c & 0x3f);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Protocol", "ErrorCode", "IpcProtocol"]
|
|
7
7
|
}
|
package/build/Protocol.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { pack } from "msgpackr";
|
|
2
2
|
import { encode } from "@colyseus/schema";
|
|
3
|
-
import { logger } from "./Logger";
|
|
4
3
|
var Protocol = /* @__PURE__ */ ((Protocol2) => {
|
|
5
4
|
Protocol2[Protocol2["JOIN_ROOM"] = 10] = "JOIN_ROOM";
|
|
6
5
|
Protocol2[Protocol2["ERROR"] = 11] = "ERROR";
|
|
@@ -8,7 +7,6 @@ var Protocol = /* @__PURE__ */ ((Protocol2) => {
|
|
|
8
7
|
Protocol2[Protocol2["ROOM_DATA"] = 13] = "ROOM_DATA";
|
|
9
8
|
Protocol2[Protocol2["ROOM_STATE"] = 14] = "ROOM_STATE";
|
|
10
9
|
Protocol2[Protocol2["ROOM_STATE_PATCH"] = 15] = "ROOM_STATE_PATCH";
|
|
11
|
-
Protocol2[Protocol2["ROOM_DATA_SCHEMA"] = 16] = "ROOM_DATA_SCHEMA";
|
|
12
10
|
Protocol2[Protocol2["ROOM_DATA_BYTES"] = 17] = "ROOM_DATA_BYTES";
|
|
13
11
|
Protocol2[Protocol2["WS_CLOSE_NORMAL"] = 1e3] = "WS_CLOSE_NORMAL";
|
|
14
12
|
Protocol2[Protocol2["WS_CLOSE_GOING_AWAY"] = 1001] = "WS_CLOSE_GOING_AWAY";
|
|
@@ -39,8 +37,8 @@ var IpcProtocol = /* @__PURE__ */ ((IpcProtocol2) => {
|
|
|
39
37
|
const getMessageBytes = {
|
|
40
38
|
[10 /* JOIN_ROOM */]: (reconnectionToken, serializerId, handshake) => {
|
|
41
39
|
let offset = 0;
|
|
42
|
-
const reconnectionTokenLength =
|
|
43
|
-
const serializerIdLength =
|
|
40
|
+
const reconnectionTokenLength = Buffer.byteLength(reconnectionToken, "utf8");
|
|
41
|
+
const serializerIdLength = Buffer.byteLength(serializerId, "utf8");
|
|
44
42
|
const handshakeLength = handshake ? handshake.length : 0;
|
|
45
43
|
const buff = Buffer.allocUnsafe(1 + reconnectionTokenLength + serializerIdLength + handshakeLength);
|
|
46
44
|
buff.writeUInt8(10 /* JOIN_ROOM */, offset++);
|
|
@@ -56,31 +54,22 @@ const getMessageBytes = {
|
|
|
56
54
|
return buff;
|
|
57
55
|
},
|
|
58
56
|
[11 /* ERROR */]: (code, message = "") => {
|
|
57
|
+
const it = { offset: 0 };
|
|
59
58
|
const bytes = [11 /* ERROR */];
|
|
60
|
-
encode.number(bytes, code);
|
|
61
|
-
encode.string(bytes, message);
|
|
59
|
+
encode.number(bytes, code, it);
|
|
60
|
+
encode.string(bytes, message, it);
|
|
62
61
|
return bytes;
|
|
63
62
|
},
|
|
64
63
|
[14 /* ROOM_STATE */]: (bytes) => {
|
|
65
64
|
return [14 /* ROOM_STATE */, ...bytes];
|
|
66
65
|
},
|
|
67
|
-
[16 /* ROOM_DATA_SCHEMA */]: (message) => {
|
|
68
|
-
const typeid = message.constructor._typeid;
|
|
69
|
-
if (typeid === void 0) {
|
|
70
|
-
logger.warn("Starting at colyseus >= 0.13 You must provide a type and message when calling `this.broadcast()` or `client.send()`. Please see: https://docs.colyseus.io/migrating/0.13/");
|
|
71
|
-
throw new Error(`an instance of Schema was expected, but ${JSON.stringify(message)} has been provided.`);
|
|
72
|
-
}
|
|
73
|
-
return [16 /* ROOM_DATA_SCHEMA */, typeid, ...message.encodeAll()];
|
|
74
|
-
},
|
|
75
66
|
raw: (code, type, message, rawMessage) => {
|
|
67
|
+
const it = { offset: 1 };
|
|
76
68
|
const initialBytes = [code];
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
encode.string(initialBytes, type);
|
|
80
|
-
} else if (messageType === "number") {
|
|
81
|
-
encode.number(initialBytes, type);
|
|
69
|
+
if (typeof type === "string") {
|
|
70
|
+
encode.string(initialBytes, type, it);
|
|
82
71
|
} else {
|
|
83
|
-
|
|
72
|
+
encode.number(initialBytes, type, it);
|
|
84
73
|
}
|
|
85
74
|
let arr;
|
|
86
75
|
if (message !== void 0) {
|
|
@@ -99,7 +88,7 @@ const getMessageBytes = {
|
|
|
99
88
|
}
|
|
100
89
|
};
|
|
101
90
|
function utf8Write(buff, offset, str = "") {
|
|
102
|
-
buff[offset++] =
|
|
91
|
+
buff[offset++] = Buffer.byteLength(str, "utf8") - 1;
|
|
103
92
|
let c = 0;
|
|
104
93
|
for (let i = 0, l = str.length; i < l; i++) {
|
|
105
94
|
c = str.charCodeAt(i);
|
|
@@ -122,29 +111,10 @@ function utf8Write(buff, offset, str = "") {
|
|
|
122
111
|
}
|
|
123
112
|
}
|
|
124
113
|
}
|
|
125
|
-
function utf8Length(str = "") {
|
|
126
|
-
let c = 0;
|
|
127
|
-
let length = 0;
|
|
128
|
-
for (let i = 0, l = str.length; i < l; i++) {
|
|
129
|
-
c = str.charCodeAt(i);
|
|
130
|
-
if (c < 128) {
|
|
131
|
-
length += 1;
|
|
132
|
-
} else if (c < 2048) {
|
|
133
|
-
length += 2;
|
|
134
|
-
} else if (c < 55296 || c >= 57344) {
|
|
135
|
-
length += 3;
|
|
136
|
-
} else {
|
|
137
|
-
i++;
|
|
138
|
-
length += 4;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return length + 1;
|
|
142
|
-
}
|
|
143
114
|
export {
|
|
144
115
|
ErrorCode,
|
|
145
116
|
IpcProtocol,
|
|
146
117
|
Protocol,
|
|
147
118
|
getMessageBytes,
|
|
148
|
-
utf8Length,
|
|
149
119
|
utf8Write
|
|
150
120
|
};
|
package/build/Protocol.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/Protocol.ts"],
|
|
4
|
-
"sourcesContent": ["import { pack } from 'msgpackr';\nimport { encode,
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY;AACrB,SAAS,
|
|
4
|
+
"sourcesContent": ["import { pack } from 'msgpackr';\nimport { encode, Iterator } from '@colyseus/schema';\n\n// Colyseus protocol codes range between 0~100\nexport enum Protocol {\n // Room-related (10~19)\n JOIN_ROOM = 10,\n ERROR = 11,\n LEAVE_ROOM = 12,\n ROOM_DATA = 13,\n ROOM_STATE = 14,\n ROOM_STATE_PATCH = 15,\n // ROOM_DATA_SCHEMA = 16, // DEPRECATED: used to send schema instances via room.send()\n ROOM_DATA_BYTES = 17,\n\n // WebSocket close codes (https://github.com/Luka967/websocket-close-codes)\n WS_CLOSE_NORMAL = 1000,\n WS_CLOSE_GOING_AWAY = 1001,\n\n // WebSocket error codes\n WS_CLOSE_CONSENTED = 4000,\n WS_CLOSE_WITH_ERROR = 4002,\n WS_CLOSE_DEVMODE_RESTART = 4010,\n\n WS_SERVER_DISCONNECT = 4201,\n WS_TOO_MANY_CLIENTS = 4202,\n}\n\nexport enum ErrorCode {\n // MatchMaking Error Codes\n MATCHMAKE_NO_HANDLER = 4210,\n MATCHMAKE_INVALID_CRITERIA = 4211,\n MATCHMAKE_INVALID_ROOM_ID = 4212,\n MATCHMAKE_UNHANDLED = 4213, // generic exception during onCreate/onJoin\n MATCHMAKE_EXPIRED = 4214, // generic exception during onCreate/onJoin\n\n AUTH_FAILED = 4215,\n APPLICATION_ERROR = 4216,\n\n INVALID_PAYLOAD = 4217,\n}\n\n// Inter-process communication protocol\nexport enum IpcProtocol {\n SUCCESS = 0,\n ERROR = 1,\n TIMEOUT = 2,\n}\n\nexport const getMessageBytes = {\n [Protocol.JOIN_ROOM]: (reconnectionToken: string, serializerId: string, handshake?: number[] | Buffer) => {\n let offset = 0;\n\n const reconnectionTokenLength = Buffer.byteLength(reconnectionToken, \"utf8\");\n const serializerIdLength = Buffer.byteLength(serializerId, \"utf8\");\n const handshakeLength = (handshake) ? handshake.length : 0;\n\n const buff = Buffer.allocUnsafe(1 + reconnectionTokenLength + serializerIdLength + handshakeLength);\n buff.writeUInt8(Protocol.JOIN_ROOM, offset++);\n\n utf8Write(buff, offset, reconnectionToken);\n offset += reconnectionTokenLength;\n\n utf8Write(buff, offset, serializerId);\n offset += serializerIdLength;\n\n if (handshake) {\n for (let i = 0, l = handshake.length; i < l; i++) {\n buff.writeUInt8(handshake[i], offset++);\n }\n }\n\n return buff;\n },\n\n [Protocol.ERROR]: (code: number, message: string = '') => {\n const it: Iterator = { offset: 0 };\n const bytes = [Protocol.ERROR];\n\n encode.number(bytes, code, it);\n encode.string(bytes, message, it);\n\n return bytes;\n },\n\n [Protocol.ROOM_STATE]: (bytes: number[]) => {\n return [Protocol.ROOM_STATE, ...bytes];\n },\n\n raw: (code: Protocol, type: string | number, message?: any, rawMessage?: ArrayLike<number> | Buffer) => {\n const it: Iterator = { offset: 1 };\n const initialBytes: number[] = [code];\n\n if (typeof (type) === 'string') {\n encode.string(initialBytes, type as string, it);\n\n } else {\n encode.number(initialBytes, type, it);\n }\n\n let arr: Uint8Array;\n\n if (message !== undefined) {\n const encoded = pack(message);\n arr = new Uint8Array(initialBytes.length + encoded.byteLength);\n arr.set(new Uint8Array(initialBytes), 0);\n arr.set(new Uint8Array(encoded), initialBytes.length);\n\n } else if (rawMessage !== undefined) {\n arr = new Uint8Array(initialBytes.length + ((rawMessage as Buffer).byteLength || rawMessage.length));\n arr.set(new Uint8Array(initialBytes), 0);\n arr.set(new Uint8Array(rawMessage), initialBytes.length);\n\n } else {\n arr = new Uint8Array(initialBytes);\n }\n\n return arr;\n },\n\n};\n\nexport function utf8Write(buff: Buffer, offset: number, str: string = '') {\n buff[offset++] = Buffer.byteLength(str, \"utf8\") - 1;\n\n let c = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n buff[offset++] = c;\n } else if (c < 0x800) {\n buff[offset++] = 0xc0 | (c >> 6);\n buff[offset++] = 0x80 | (c & 0x3f);\n } else if (c < 0xd800 || c >= 0xe000) {\n buff[offset++] = 0xe0 | (c >> 12);\n buff[offset++] = 0x80 | (c >> 6) & 0x3f;\n buff[offset++] = 0x80 | (c & 0x3f);\n } else {\n i++;\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\n buff[offset++] = 0xf0 | (c >> 18);\n buff[offset++] = 0x80 | (c >> 12) & 0x3f;\n buff[offset++] = 0x80 | (c >> 6) & 0x3f;\n buff[offset++] = 0x80 | (c & 0x3f);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Protocol", "ErrorCode", "IpcProtocol"]
|
|
7
7
|
}
|
package/build/Room.d.ts
CHANGED
|
@@ -20,8 +20,6 @@ export declare enum RoomInternalState {
|
|
|
20
20
|
CREATED = 1,
|
|
21
21
|
DISPOSING = 2
|
|
22
22
|
}
|
|
23
|
-
type ExtractUserData<T> = T extends ClientArray<infer U> ? U : never;
|
|
24
|
-
type ExtractAuthData<T> = T extends ClientArray<infer _, infer U> ? U : never;
|
|
25
23
|
/**
|
|
26
24
|
* A Room class is meant to implement a game session, and/or serve as the communication channel
|
|
27
25
|
* between a group of clients.
|
|
@@ -29,7 +27,7 @@ type ExtractAuthData<T> = T extends ClientArray<infer _, infer U> ? U : never;
|
|
|
29
27
|
* - Rooms are created on demand during matchmaking by default
|
|
30
28
|
* - Room classes must be exposed using `.define()`
|
|
31
29
|
*/
|
|
32
|
-
export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
30
|
+
export declare abstract class Room<State extends object = any, Metadata = any, UserData = any, AuthData = any> {
|
|
33
31
|
#private;
|
|
34
32
|
/**
|
|
35
33
|
* This property will change on these situations:
|
|
@@ -42,7 +40,8 @@ export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
|
42
40
|
get metadata(): Metadata;
|
|
43
41
|
listing: RoomListingData<Metadata>;
|
|
44
42
|
/**
|
|
45
|
-
*
|
|
43
|
+
* Timing events tied to the room instance.
|
|
44
|
+
* Intervals and timeouts are cleared when the room is disposed.
|
|
46
45
|
*/
|
|
47
46
|
clock: Clock;
|
|
48
47
|
/**
|
|
@@ -72,15 +71,15 @@ export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
|
72
71
|
*
|
|
73
72
|
* @see {@link https://docs.colyseus.io/colyseus/server/room/#client|Client instance}
|
|
74
73
|
*/
|
|
75
|
-
clients: ClientArray
|
|
74
|
+
clients: ClientArray<UserData, AuthData>;
|
|
76
75
|
/** @internal */
|
|
77
|
-
_events: EventEmitter
|
|
76
|
+
_events: EventEmitter<[never]>;
|
|
78
77
|
protected seatReservationTime: number;
|
|
79
78
|
protected reservedSeats: {
|
|
80
79
|
[sessionId: string]: [any, any];
|
|
81
80
|
};
|
|
82
81
|
protected reservedSeatTimeouts: {
|
|
83
|
-
[sessionId: string]: NodeJS.
|
|
82
|
+
[sessionId: string]: NodeJS.Timeout;
|
|
84
83
|
};
|
|
85
84
|
protected _reconnections: {
|
|
86
85
|
[reconnectionToken: string]: [string, Deferred];
|
|
@@ -96,7 +95,7 @@ export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
|
96
95
|
private _lockedExplicitly;
|
|
97
96
|
private _maxClientsReached;
|
|
98
97
|
private _autoDisposeTimeout;
|
|
99
|
-
constructor(
|
|
98
|
+
constructor();
|
|
100
99
|
/**
|
|
101
100
|
* Automatically dispose the room when last client disconnects.
|
|
102
101
|
*
|
|
@@ -132,14 +131,14 @@ export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
|
132
131
|
set roomId(roomId: string);
|
|
133
132
|
onBeforePatch?(state: State): void | Promise<any>;
|
|
134
133
|
onCreate?(options: any): void | Promise<any>;
|
|
135
|
-
onJoin?(client: Client<
|
|
136
|
-
onLeave?(client: Client<
|
|
134
|
+
onJoin?(client: Client<UserData, AuthData>, options?: any, auth?: AuthData): void | Promise<any>;
|
|
135
|
+
onLeave?(client: Client<UserData, AuthData>, consented?: boolean): void | Promise<any>;
|
|
137
136
|
onDispose?(): void | Promise<any>;
|
|
138
137
|
/**
|
|
139
138
|
* onAuth at the instance level will be deprecated in the future.
|
|
140
139
|
* Please use "static onAuth(token, req) instead
|
|
141
140
|
*/
|
|
142
|
-
onAuth(client: Client<
|
|
141
|
+
onAuth(client: Client<UserData, AuthData>, options: any, request?: http.IncomingMessage): any | Promise<any>;
|
|
143
142
|
static onAuth(token: string, req: IncomingMessage): Promise<unknown>;
|
|
144
143
|
/**
|
|
145
144
|
* devMode: When `devMode` is enabled, `onCacheRoom` method is called during
|
|
@@ -206,8 +205,8 @@ export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
|
206
205
|
* Checks whether mutations have occurred in the state, and broadcast them to all connected clients.
|
|
207
206
|
*/
|
|
208
207
|
broadcastPatch(): boolean;
|
|
209
|
-
onMessage<T = any>(messageType: '*', callback: (client: Client<
|
|
210
|
-
onMessage<T = any>(messageType: string | number, callback: (client: Client<
|
|
208
|
+
onMessage<T = any>(messageType: '*', callback: (client: Client<UserData, AuthData>, type: string | number, message: T) => void): any;
|
|
209
|
+
onMessage<T = any>(messageType: string | number, callback: (client: Client<UserData, AuthData>, message: T) => void): any;
|
|
211
210
|
/**
|
|
212
211
|
* Disconnect all connected clients, and then dispose the room.
|
|
213
212
|
*
|
|
@@ -228,9 +227,8 @@ export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
|
228
227
|
*/
|
|
229
228
|
allowReconnection(previousClient: Client, seconds: number | "manual"): Deferred<Client>;
|
|
230
229
|
protected resetAutoDisposeTimeout(timeoutInSeconds?: number): void;
|
|
231
|
-
private broadcastMessageSchema;
|
|
232
230
|
private broadcastMessageType;
|
|
233
|
-
|
|
231
|
+
private sendFullState;
|
|
234
232
|
private _dequeueAfterPatchMessages;
|
|
235
233
|
private _reserveSeat;
|
|
236
234
|
private _disposeIfEmpty;
|
|
@@ -241,4 +239,3 @@ export declare abstract class Room<State extends object = any, Metadata = any> {
|
|
|
241
239
|
private _incrementClientCount;
|
|
242
240
|
private _decrementClientCount;
|
|
243
241
|
}
|
|
244
|
-
export {};
|
package/build/Room.js
CHANGED
|
@@ -28,7 +28,6 @@ __export(Room_exports, {
|
|
|
28
28
|
RoomInternalState: () => RoomInternalState
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(Room_exports);
|
|
31
|
-
var import_ws = __toESM(require("ws"));
|
|
32
31
|
var import_msgpackr = require("msgpackr");
|
|
33
32
|
var import_schema = require("@colyseus/schema");
|
|
34
33
|
var import_timer = __toESM(require("@gamestdio/timer"));
|
|
@@ -53,7 +52,7 @@ var RoomInternalState = /* @__PURE__ */ ((RoomInternalState2) => {
|
|
|
53
52
|
return RoomInternalState2;
|
|
54
53
|
})(RoomInternalState || {});
|
|
55
54
|
class Room {
|
|
56
|
-
constructor(
|
|
55
|
+
constructor() {
|
|
57
56
|
this.clock = new import_timer.default();
|
|
58
57
|
this.#_autoDispose = true;
|
|
59
58
|
this.maxClients = Infinity;
|
|
@@ -72,7 +71,6 @@ class Room {
|
|
|
72
71
|
this._locked = false;
|
|
73
72
|
this._lockedExplicitly = false;
|
|
74
73
|
this._maxClientsReached = false;
|
|
75
|
-
this.presence = presence;
|
|
76
74
|
this._events.once("dispose", async () => {
|
|
77
75
|
try {
|
|
78
76
|
await this._dispose();
|
|
@@ -174,7 +172,7 @@ class Room {
|
|
|
174
172
|
}
|
|
175
173
|
setState(newState) {
|
|
176
174
|
this.clock.start();
|
|
177
|
-
if (
|
|
175
|
+
if (newState[import_schema.$changes] !== void 0) {
|
|
178
176
|
this.setSerializer(new import_SchemaSerializer.SchemaSerializer());
|
|
179
177
|
}
|
|
180
178
|
this._serializer.reset(newState);
|
|
@@ -246,11 +244,7 @@ class Room {
|
|
|
246
244
|
this._afterNextPatchQueue.push(["broadcast", arguments]);
|
|
247
245
|
return;
|
|
248
246
|
}
|
|
249
|
-
|
|
250
|
-
this.broadcastMessageSchema(typeOrSchema, opts);
|
|
251
|
-
} else {
|
|
252
|
-
this.broadcastMessageType(typeOrSchema, messageOrOptions, opts);
|
|
253
|
-
}
|
|
247
|
+
this.broadcastMessageType(typeOrSchema, messageOrOptions, opts);
|
|
254
248
|
}
|
|
255
249
|
broadcastPatch() {
|
|
256
250
|
if (this.onBeforePatch) {
|
|
@@ -326,7 +320,7 @@ class Room {
|
|
|
326
320
|
throw new import_ServerError.ServerError(import_Protocol.ErrorCode.AUTH_FAILED, "onAuth failed");
|
|
327
321
|
}
|
|
328
322
|
}
|
|
329
|
-
if (client.
|
|
323
|
+
if (client.state === import_Transport.ClientState.LEAVING) {
|
|
330
324
|
throw new import_ServerError.ServerError(import_Protocol.Protocol.WS_CLOSE_GOING_AWAY, "already disconnected");
|
|
331
325
|
}
|
|
332
326
|
this.clients.push(client);
|
|
@@ -416,18 +410,6 @@ class Room {
|
|
|
416
410
|
this._disposeIfEmpty();
|
|
417
411
|
}, timeoutInSeconds * 1e3);
|
|
418
412
|
}
|
|
419
|
-
broadcastMessageSchema(message, options = {}) {
|
|
420
|
-
(0, import_Debug.debugMessage)("broadcast: %O", message);
|
|
421
|
-
const encodedMessage = import_Protocol.getMessageBytes[import_Protocol.Protocol.ROOM_DATA_SCHEMA](message);
|
|
422
|
-
const except = typeof options.except !== "undefined" ? Array.isArray(options.except) ? options.except : [options.except] : void 0;
|
|
423
|
-
let numClients = this.clients.length;
|
|
424
|
-
while (numClients--) {
|
|
425
|
-
const client = this.clients[numClients];
|
|
426
|
-
if (!except || !except.includes(client)) {
|
|
427
|
-
client.enqueueRaw(encodedMessage);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
413
|
broadcastMessageType(type, message, options = {}) {
|
|
432
414
|
(0, import_Debug.debugMessage)("broadcast: %O", message);
|
|
433
415
|
const encodedMessage = import_Protocol.getMessageBytes.raw(import_Protocol.Protocol.ROOM_DATA, type, message);
|