@colyseus/core 0.16.0-preview.3 → 0.16.0-preview.31
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/Debug.js +6 -2
- package/build/Debug.js.map +2 -2
- package/build/Debug.mjs +11 -10
- package/build/Debug.mjs.map +2 -2
- package/build/IPC.d.ts +1 -1
- package/build/IPC.js +3 -3
- package/build/IPC.js.map +2 -2
- package/build/IPC.mjs +4 -3
- package/build/IPC.mjs.map +2 -2
- package/build/Logger.mjs +4 -3
- package/build/Logger.mjs.map +1 -1
- package/build/MatchMaker.d.ts +30 -22
- package/build/MatchMaker.js +110 -87
- package/build/MatchMaker.js.map +2 -2
- package/build/MatchMaker.mjs +114 -94
- package/build/MatchMaker.mjs.map +2 -2
- package/build/Protocol.d.ts +3 -4
- package/build/Protocol.js +28 -19
- package/build/Protocol.js.map +2 -2
- package/build/Protocol.mjs +31 -21
- package/build/Protocol.mjs.map +2 -2
- package/build/Room.d.ts +36 -35
- package/build/Room.js +270 -109
- package/build/Room.js.map +2 -2
- package/build/Room.mjs +274 -116
- package/build/Room.mjs.map +2 -2
- package/build/Server.d.ts +6 -7
- package/build/Server.js +40 -12
- package/build/Server.js.map +2 -2
- package/build/Server.mjs +40 -15
- package/build/Server.mjs.map +3 -3
- package/build/Stats.js +1 -1
- package/build/Stats.js.map +2 -2
- package/build/Stats.mjs +6 -5
- package/build/Stats.mjs.map +2 -2
- package/build/Transport.d.ts +24 -11
- package/build/Transport.js +1 -1
- package/build/Transport.js.map +2 -2
- package/build/Transport.mjs +6 -5
- package/build/Transport.mjs.map +2 -2
- package/build/discovery/index.d.ts +1 -1
- package/build/discovery/index.js.map +2 -2
- package/build/discovery/index.mjs +3 -2
- package/build/discovery/index.mjs.map +2 -2
- package/build/errors/SeatReservationError.mjs +3 -2
- package/build/errors/SeatReservationError.mjs.map +1 -1
- package/build/errors/ServerError.js +1 -1
- package/build/errors/ServerError.js.map +1 -1
- package/build/errors/ServerError.mjs +5 -4
- package/build/errors/ServerError.mjs.map +2 -2
- package/build/index.d.ts +20 -19
- package/build/index.js +28 -20
- package/build/index.js.map +2 -2
- package/build/index.mjs +21 -19
- package/build/index.mjs.map +2 -2
- package/build/matchmaker/Lobby.d.ts +3 -3
- package/build/matchmaker/Lobby.js +6 -3
- package/build/matchmaker/Lobby.js.map +2 -2
- package/build/matchmaker/Lobby.mjs +4 -4
- package/build/matchmaker/Lobby.mjs.map +2 -2
- package/build/matchmaker/RegisteredHandler.d.ts +6 -7
- package/build/matchmaker/RegisteredHandler.js +7 -10
- package/build/matchmaker/RegisteredHandler.js.map +2 -2
- package/build/matchmaker/RegisteredHandler.mjs +11 -13
- package/build/matchmaker/RegisteredHandler.mjs.map +2 -2
- package/build/matchmaker/controller.d.ts +3 -4
- package/build/matchmaker/controller.js +22 -5
- package/build/matchmaker/controller.js.map +2 -2
- package/build/matchmaker/controller.mjs +19 -3
- package/build/matchmaker/controller.mjs.map +2 -2
- package/build/matchmaker/driver/RoomData.d.ts +3 -3
- package/build/matchmaker/driver/RoomData.js +3 -3
- package/build/matchmaker/driver/RoomData.js.map +2 -2
- package/build/matchmaker/driver/RoomData.mjs +2 -2
- package/build/matchmaker/driver/RoomData.mjs.map +2 -2
- package/build/matchmaker/driver/api.d.ts +104 -0
- package/build/matchmaker/driver/api.js +29 -0
- package/build/matchmaker/driver/api.js.map +7 -0
- package/build/matchmaker/driver/api.mjs +7 -0
- package/build/matchmaker/driver/api.mjs.map +7 -0
- package/build/matchmaker/driver/index.d.ts +7 -7
- package/build/matchmaker/driver/index.js +1 -1
- package/build/matchmaker/driver/index.js.map +2 -2
- package/build/matchmaker/driver/index.mjs +2 -2
- package/build/matchmaker/driver/index.mjs.map +2 -2
- package/build/matchmaker/driver/interfaces.d.ts +7 -11
- package/build/matchmaker/driver/interfaces.js.map +1 -1
- package/build/matchmaker/driver/local/LocalDriver.d.ts +13 -0
- package/build/matchmaker/driver/local/LocalDriver.js +65 -0
- package/build/matchmaker/driver/local/LocalDriver.js.map +7 -0
- package/build/matchmaker/driver/local/LocalDriver.mjs +43 -0
- package/build/matchmaker/driver/local/LocalDriver.mjs.map +7 -0
- package/build/matchmaker/driver/local/Query.d.ts +9 -0
- package/build/matchmaker/driver/local/Query.js +78 -0
- package/build/matchmaker/driver/local/Query.js.map +7 -0
- package/build/matchmaker/driver/local/Query.mjs +56 -0
- package/build/matchmaker/driver/local/Query.mjs.map +7 -0
- package/build/matchmaker/driver/local/RoomData.d.ts +19 -0
- package/build/matchmaker/driver/local/RoomData.js +79 -0
- package/build/matchmaker/driver/local/RoomData.js.map +7 -0
- package/build/matchmaker/driver/local/RoomData.mjs +57 -0
- package/build/matchmaker/driver/local/RoomData.mjs.map +7 -0
- package/build/presence/LocalPresence.d.ts +10 -3
- package/build/presence/LocalPresence.js +83 -5
- package/build/presence/LocalPresence.js.map +3 -3
- package/build/presence/LocalPresence.mjs +83 -8
- package/build/presence/LocalPresence.mjs.map +3 -3
- package/build/presence/Presence.d.ts +38 -2
- package/build/presence/Presence.js.map +1 -1
- package/build/rooms/LobbyRoom.d.ts +6 -6
- package/build/rooms/LobbyRoom.js +8 -3
- package/build/rooms/LobbyRoom.js.map +2 -2
- package/build/rooms/LobbyRoom.mjs +7 -5
- package/build/rooms/LobbyRoom.mjs.map +2 -2
- package/build/rooms/RelayRoom.d.ts +2 -2
- package/build/rooms/RelayRoom.js +3 -1
- package/build/rooms/RelayRoom.js.map +2 -2
- package/build/rooms/RelayRoom.mjs +10 -7
- package/build/rooms/RelayRoom.mjs.map +2 -2
- package/build/serializer/NoneSerializer.d.ts +2 -2
- package/build/serializer/NoneSerializer.js.map +1 -1
- package/build/serializer/NoneSerializer.mjs +3 -2
- package/build/serializer/NoneSerializer.mjs.map +2 -2
- package/build/serializer/SchemaSerializer.d.ts +13 -11
- package/build/serializer/SchemaSerializer.js +13 -10
- package/build/serializer/SchemaSerializer.js.map +2 -2
- package/build/serializer/SchemaSerializer.mjs +17 -13
- package/build/serializer/SchemaSerializer.mjs.map +2 -2
- package/build/serializer/Serializer.d.ts +1 -2
- package/build/serializer/Serializer.js.map +1 -1
- package/build/utils/DevMode.d.ts +2 -2
- package/build/utils/DevMode.js +8 -4
- package/build/utils/DevMode.js.map +2 -2
- package/build/utils/DevMode.mjs +7 -6
- package/build/utils/DevMode.mjs.map +2 -2
- package/build/utils/Utils.d.ts +4 -2
- package/build/utils/Utils.js +16 -15
- package/build/utils/Utils.js.map +2 -2
- package/build/utils/Utils.mjs +18 -21
- package/build/utils/Utils.mjs.map +2 -2
- package/package.json +9 -3
package/build/Protocol.js
CHANGED
|
@@ -23,7 +23,7 @@ __export(Protocol_exports, {
|
|
|
23
23
|
getMessageBytes: () => getMessageBytes
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(Protocol_exports);
|
|
26
|
-
var import_msgpackr = require("msgpackr");
|
|
26
|
+
var import_msgpackr = require("@colyseus/msgpackr");
|
|
27
27
|
var import_schema = require("@colyseus/schema");
|
|
28
28
|
var Protocol = /* @__PURE__ */ ((Protocol2) => {
|
|
29
29
|
Protocol2[Protocol2["JOIN_ROOM"] = 10] = "JOIN_ROOM";
|
|
@@ -59,43 +59,52 @@ var IpcProtocol = /* @__PURE__ */ ((IpcProtocol2) => {
|
|
|
59
59
|
IpcProtocol2[IpcProtocol2["TIMEOUT"] = 2] = "TIMEOUT";
|
|
60
60
|
return IpcProtocol2;
|
|
61
61
|
})(IpcProtocol || {});
|
|
62
|
-
const sendBuffer = Buffer.allocUnsafe(8192);
|
|
63
62
|
const packr = new import_msgpackr.Packr();
|
|
64
|
-
packr.
|
|
63
|
+
packr.encode(void 0);
|
|
65
64
|
const getMessageBytes = {
|
|
66
65
|
[10 /* JOIN_ROOM */]: (reconnectionToken, serializerId, handshake) => {
|
|
67
66
|
const it = { offset: 1 };
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
import_schema.encode.utf8Write(
|
|
71
|
-
|
|
72
|
-
import_schema.encode.utf8Write(
|
|
73
|
-
|
|
67
|
+
packr.buffer[0] = 10 /* JOIN_ROOM */;
|
|
68
|
+
packr.buffer[it.offset++] = Buffer.byteLength(reconnectionToken, "utf8");
|
|
69
|
+
import_schema.encode.utf8Write(packr.buffer, reconnectionToken, it);
|
|
70
|
+
packr.buffer[it.offset++] = Buffer.byteLength(serializerId, "utf8");
|
|
71
|
+
import_schema.encode.utf8Write(packr.buffer, serializerId, it);
|
|
72
|
+
let handshakeLength = handshake?.byteLength || 0;
|
|
73
|
+
if (handshakeLength > 0) {
|
|
74
|
+
handshake.copy(packr.buffer, it.offset, 0, handshakeLength);
|
|
75
|
+
}
|
|
76
|
+
return packr.buffer.subarray(0, it.offset + handshakeLength);
|
|
74
77
|
},
|
|
75
78
|
[11 /* ERROR */]: (code, message = "") => {
|
|
76
79
|
const it = { offset: 1 };
|
|
77
|
-
|
|
78
|
-
import_schema.encode.number(
|
|
79
|
-
import_schema.encode.string(
|
|
80
|
-
return
|
|
80
|
+
packr.buffer[0] = 11 /* ERROR */;
|
|
81
|
+
import_schema.encode.number(packr.buffer, code, it);
|
|
82
|
+
import_schema.encode.string(packr.buffer, message, it);
|
|
83
|
+
return packr.buffer.subarray(0, it.offset);
|
|
81
84
|
},
|
|
82
85
|
[14 /* ROOM_STATE */]: (bytes) => {
|
|
83
86
|
return [14 /* ROOM_STATE */, ...bytes];
|
|
84
87
|
},
|
|
85
88
|
raw: (code, type, message, rawMessage) => {
|
|
86
89
|
const it = { offset: 1 };
|
|
87
|
-
|
|
90
|
+
packr.buffer[0] = code;
|
|
88
91
|
if (typeof type === "string") {
|
|
89
|
-
import_schema.encode.string(
|
|
92
|
+
import_schema.encode.string(packr.buffer, type, it);
|
|
90
93
|
} else {
|
|
91
|
-
import_schema.encode.number(
|
|
94
|
+
import_schema.encode.number(packr.buffer, type, it);
|
|
92
95
|
}
|
|
93
96
|
if (message !== void 0) {
|
|
94
|
-
|
|
97
|
+
packr.position = 0;
|
|
98
|
+
if (process.env.NODE_ENV !== "production") {
|
|
99
|
+
packr.useBuffer(packr.buffer);
|
|
100
|
+
}
|
|
101
|
+
const endOfBufferOffset = packr.pack(message, 2048 + it.offset).byteLength;
|
|
102
|
+
return packr.buffer.subarray(0, endOfBufferOffset);
|
|
95
103
|
} else if (rawMessage !== void 0) {
|
|
96
|
-
|
|
104
|
+
packr.buffer.set(rawMessage, it.offset);
|
|
105
|
+
return packr.buffer.subarray(0, it.offset + rawMessage.byteLength);
|
|
97
106
|
} else {
|
|
98
|
-
return
|
|
107
|
+
return packr.buffer.subarray(0, it.offset);
|
|
99
108
|
}
|
|
100
109
|
}
|
|
101
110
|
};
|
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, Packr } 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\nconst
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA4B;AAC5B,oBAAiC;AAG1B,IAAK,WAAL,kBAAKA,cAAL;AAEL,EAAAA,oBAAA,eAAY,MAAZ;AACA,EAAAA,oBAAA,WAAQ,MAAR;AACA,EAAAA,oBAAA,gBAAa,MAAb;AACA,EAAAA,oBAAA,eAAY,MAAZ;AACA,EAAAA,oBAAA,gBAAa,MAAb;AACA,EAAAA,oBAAA,sBAAmB,MAAnB;AAEA,EAAAA,oBAAA,qBAAkB,MAAlB;AAGA,EAAAA,oBAAA,qBAAkB,OAAlB;AACA,EAAAA,oBAAA,yBAAsB,QAAtB;AAGA,EAAAA,oBAAA,wBAAqB,OAArB;AACA,EAAAA,oBAAA,yBAAsB,QAAtB;AACA,EAAAA,oBAAA,8BAA2B,QAA3B;AAEA,EAAAA,oBAAA,0BAAuB,QAAvB;AACA,EAAAA,oBAAA,yBAAsB,QAAtB;AArBU,SAAAA;AAAA,GAAA;AAwBL,IAAK,YAAL,kBAAKC,eAAL;AAEL,EAAAA,sBAAA,0BAAuB,QAAvB;AACA,EAAAA,sBAAA,gCAA6B,QAA7B;AACA,EAAAA,sBAAA,+BAA4B,QAA5B;AACA,EAAAA,sBAAA,yBAAsB,QAAtB;AACA,EAAAA,sBAAA,uBAAoB,QAApB;AAEA,EAAAA,sBAAA,iBAAc,QAAd;AACA,EAAAA,sBAAA,uBAAoB,QAApB;AAEA,EAAAA,sBAAA,qBAAkB,QAAlB;AAXU,SAAAA;AAAA,GAAA;AAeL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,0BAAA,aAAU,KAAV;AACA,EAAAA,0BAAA,WAAQ,KAAR;AACA,EAAAA,0BAAA,aAAU,KAAV;AAHU,SAAAA;AAAA,GAAA;
|
|
4
|
+
"sourcesContent": ["import { pack, Packr } from '@colyseus/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\n\nconst packr = new Packr();\n\n// msgpackr workaround: initialize buffer\npackr.encode(undefined);\n\nexport const getMessageBytes = {\n [Protocol.JOIN_ROOM]: (reconnectionToken: string, serializerId: string, handshake?: Buffer) => {\n const it: Iterator = { offset: 1 };\n packr.buffer[0] = Protocol.JOIN_ROOM;\n\n packr.buffer[it.offset++] = Buffer.byteLength(reconnectionToken, \"utf8\");\n encode.utf8Write(packr.buffer, reconnectionToken, it);\n\n packr.buffer[it.offset++] = Buffer.byteLength(serializerId, \"utf8\");\n encode.utf8Write(packr.buffer, serializerId, it);\n\n let handshakeLength = handshake?.byteLength || 0;\n if (handshakeLength > 0) {\n handshake.copy(packr.buffer, it.offset, 0, handshakeLength);\n }\n\n return packr.buffer.subarray(0, it.offset + handshakeLength);\n },\n\n [Protocol.ERROR]: (code: number, message: string = '') => {\n const it: Iterator = { offset: 1 };\n packr.buffer[0] = Protocol.ERROR;\n\n encode.number(packr.buffer, code, it);\n encode.string(packr.buffer, message, it);\n\n return packr.buffer.subarray(0, it.offset);\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?: Uint8Array | Buffer) => {\n const it: Iterator = { offset: 1 };\n packr.buffer[0] = code;\n\n if (typeof (type) === 'string') {\n encode.string(packr.buffer, type as string, it);\n\n } else {\n encode.number(packr.buffer, type, it);\n }\n\n if (message !== undefined) {\n // force to encode from offset\n packr.position = 0;\n\n //\n // TODO: remove this after issue is fixed https://github.com/kriszyp/msgpackr/issues/139\n //\n // - This check is only required when running integration tests.\n // (colyseus.js' usage of msgpackr/buffer is conflicting)\n //\n if (process.env.NODE_ENV !== \"production\") {\n packr.useBuffer(packr.buffer);\n }\n\n // pack message into the same packr.buffer\n const endOfBufferOffset = packr.pack(message, 2048 + it.offset).byteLength;\n // 2048 = RESERVE_START_SPACE\n return packr.buffer.subarray(0, endOfBufferOffset);\n\n } else if (rawMessage !== undefined) {\n\n // copy raw message into packr.buffer\n packr.buffer.set(rawMessage, it.offset);\n return packr.buffer.subarray(0, it.offset + rawMessage.byteLength);\n\n } else {\n return packr.buffer.subarray(0, it.offset);\n }\n },\n\n};\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Protocol", "ErrorCode", "IpcProtocol"]
|
|
7
7
|
}
|
package/build/Protocol.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
// packages/core/src/Protocol.ts
|
|
2
|
+
import { Packr } from "@colyseus/msgpackr";
|
|
2
3
|
import { encode } from "@colyseus/schema";
|
|
3
4
|
var Protocol = /* @__PURE__ */ ((Protocol2) => {
|
|
4
5
|
Protocol2[Protocol2["JOIN_ROOM"] = 10] = "JOIN_ROOM";
|
|
@@ -34,43 +35,52 @@ var IpcProtocol = /* @__PURE__ */ ((IpcProtocol2) => {
|
|
|
34
35
|
IpcProtocol2[IpcProtocol2["TIMEOUT"] = 2] = "TIMEOUT";
|
|
35
36
|
return IpcProtocol2;
|
|
36
37
|
})(IpcProtocol || {});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const getMessageBytes = {
|
|
38
|
+
var packr = new Packr();
|
|
39
|
+
packr.encode(void 0);
|
|
40
|
+
var getMessageBytes = {
|
|
41
41
|
[10 /* JOIN_ROOM */]: (reconnectionToken, serializerId, handshake) => {
|
|
42
42
|
const it = { offset: 1 };
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
encode.utf8Write(
|
|
46
|
-
|
|
47
|
-
encode.utf8Write(
|
|
48
|
-
|
|
43
|
+
packr.buffer[0] = 10 /* JOIN_ROOM */;
|
|
44
|
+
packr.buffer[it.offset++] = Buffer.byteLength(reconnectionToken, "utf8");
|
|
45
|
+
encode.utf8Write(packr.buffer, reconnectionToken, it);
|
|
46
|
+
packr.buffer[it.offset++] = Buffer.byteLength(serializerId, "utf8");
|
|
47
|
+
encode.utf8Write(packr.buffer, serializerId, it);
|
|
48
|
+
let handshakeLength = handshake?.byteLength || 0;
|
|
49
|
+
if (handshakeLength > 0) {
|
|
50
|
+
handshake.copy(packr.buffer, it.offset, 0, handshakeLength);
|
|
51
|
+
}
|
|
52
|
+
return packr.buffer.subarray(0, it.offset + handshakeLength);
|
|
49
53
|
},
|
|
50
54
|
[11 /* ERROR */]: (code, message = "") => {
|
|
51
55
|
const it = { offset: 1 };
|
|
52
|
-
|
|
53
|
-
encode.number(
|
|
54
|
-
encode.string(
|
|
55
|
-
return
|
|
56
|
+
packr.buffer[0] = 11 /* ERROR */;
|
|
57
|
+
encode.number(packr.buffer, code, it);
|
|
58
|
+
encode.string(packr.buffer, message, it);
|
|
59
|
+
return packr.buffer.subarray(0, it.offset);
|
|
56
60
|
},
|
|
57
61
|
[14 /* ROOM_STATE */]: (bytes) => {
|
|
58
62
|
return [14 /* ROOM_STATE */, ...bytes];
|
|
59
63
|
},
|
|
60
64
|
raw: (code, type, message, rawMessage) => {
|
|
61
65
|
const it = { offset: 1 };
|
|
62
|
-
|
|
66
|
+
packr.buffer[0] = code;
|
|
63
67
|
if (typeof type === "string") {
|
|
64
|
-
encode.string(
|
|
68
|
+
encode.string(packr.buffer, type, it);
|
|
65
69
|
} else {
|
|
66
|
-
encode.number(
|
|
70
|
+
encode.number(packr.buffer, type, it);
|
|
67
71
|
}
|
|
68
72
|
if (message !== void 0) {
|
|
69
|
-
|
|
73
|
+
packr.position = 0;
|
|
74
|
+
if (process.env.NODE_ENV !== "production") {
|
|
75
|
+
packr.useBuffer(packr.buffer);
|
|
76
|
+
}
|
|
77
|
+
const endOfBufferOffset = packr.pack(message, 2048 + it.offset).byteLength;
|
|
78
|
+
return packr.buffer.subarray(0, endOfBufferOffset);
|
|
70
79
|
} else if (rawMessage !== void 0) {
|
|
71
|
-
|
|
80
|
+
packr.buffer.set(rawMessage, it.offset);
|
|
81
|
+
return packr.buffer.subarray(0, it.offset + rawMessage.byteLength);
|
|
72
82
|
} else {
|
|
73
|
-
return
|
|
83
|
+
return packr.buffer.subarray(0, it.offset);
|
|
74
84
|
}
|
|
75
85
|
}
|
|
76
86
|
};
|
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, Packr } 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\nconst
|
|
5
|
-
"mappings": "AAAA,
|
|
4
|
+
"sourcesContent": ["import { pack, Packr } from '@colyseus/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\n\nconst packr = new Packr();\n\n// msgpackr workaround: initialize buffer\npackr.encode(undefined);\n\nexport const getMessageBytes = {\n [Protocol.JOIN_ROOM]: (reconnectionToken: string, serializerId: string, handshake?: Buffer) => {\n const it: Iterator = { offset: 1 };\n packr.buffer[0] = Protocol.JOIN_ROOM;\n\n packr.buffer[it.offset++] = Buffer.byteLength(reconnectionToken, \"utf8\");\n encode.utf8Write(packr.buffer, reconnectionToken, it);\n\n packr.buffer[it.offset++] = Buffer.byteLength(serializerId, \"utf8\");\n encode.utf8Write(packr.buffer, serializerId, it);\n\n let handshakeLength = handshake?.byteLength || 0;\n if (handshakeLength > 0) {\n handshake.copy(packr.buffer, it.offset, 0, handshakeLength);\n }\n\n return packr.buffer.subarray(0, it.offset + handshakeLength);\n },\n\n [Protocol.ERROR]: (code: number, message: string = '') => {\n const it: Iterator = { offset: 1 };\n packr.buffer[0] = Protocol.ERROR;\n\n encode.number(packr.buffer, code, it);\n encode.string(packr.buffer, message, it);\n\n return packr.buffer.subarray(0, it.offset);\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?: Uint8Array | Buffer) => {\n const it: Iterator = { offset: 1 };\n packr.buffer[0] = code;\n\n if (typeof (type) === 'string') {\n encode.string(packr.buffer, type as string, it);\n\n } else {\n encode.number(packr.buffer, type, it);\n }\n\n if (message !== undefined) {\n // force to encode from offset\n packr.position = 0;\n\n //\n // TODO: remove this after issue is fixed https://github.com/kriszyp/msgpackr/issues/139\n //\n // - This check is only required when running integration tests.\n // (colyseus.js' usage of msgpackr/buffer is conflicting)\n //\n if (process.env.NODE_ENV !== \"production\") {\n packr.useBuffer(packr.buffer);\n }\n\n // pack message into the same packr.buffer\n const endOfBufferOffset = packr.pack(message, 2048 + it.offset).byteLength;\n // 2048 = RESERVE_START_SPACE\n return packr.buffer.subarray(0, endOfBufferOffset);\n\n } else if (rawMessage !== undefined) {\n\n // copy raw message into packr.buffer\n packr.buffer.set(rawMessage, it.offset);\n return packr.buffer.subarray(0, it.offset + rawMessage.byteLength);\n\n } else {\n return packr.buffer.subarray(0, it.offset);\n }\n },\n\n};\n\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAe,aAAa;AAC5B,SAAS,cAAwB;AAG1B,IAAK,WAAL,kBAAKA,cAAL;AAEL,EAAAA,oBAAA,eAAY,MAAZ;AACA,EAAAA,oBAAA,WAAQ,MAAR;AACA,EAAAA,oBAAA,gBAAa,MAAb;AACA,EAAAA,oBAAA,eAAY,MAAZ;AACA,EAAAA,oBAAA,gBAAa,MAAb;AACA,EAAAA,oBAAA,sBAAmB,MAAnB;AAEA,EAAAA,oBAAA,qBAAkB,MAAlB;AAGA,EAAAA,oBAAA,qBAAkB,OAAlB;AACA,EAAAA,oBAAA,yBAAsB,QAAtB;AAGA,EAAAA,oBAAA,wBAAqB,OAArB;AACA,EAAAA,oBAAA,yBAAsB,QAAtB;AACA,EAAAA,oBAAA,8BAA2B,QAA3B;AAEA,EAAAA,oBAAA,0BAAuB,QAAvB;AACA,EAAAA,oBAAA,yBAAsB,QAAtB;AArBU,SAAAA;AAAA,GAAA;AAwBL,IAAK,YAAL,kBAAKC,eAAL;AAEL,EAAAA,sBAAA,0BAAuB,QAAvB;AACA,EAAAA,sBAAA,gCAA6B,QAA7B;AACA,EAAAA,sBAAA,+BAA4B,QAA5B;AACA,EAAAA,sBAAA,yBAAsB,QAAtB;AACA,EAAAA,sBAAA,uBAAoB,QAApB;AAEA,EAAAA,sBAAA,iBAAc,QAAd;AACA,EAAAA,sBAAA,uBAAoB,QAApB;AAEA,EAAAA,sBAAA,qBAAkB,QAAlB;AAXU,SAAAA;AAAA,GAAA;AAeL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,0BAAA,aAAU,KAAV;AACA,EAAAA,0BAAA,WAAQ,KAAR;AACA,EAAAA,0BAAA,aAAU,KAAV;AAHU,SAAAA;AAAA,GAAA;AAOZ,IAAM,QAAQ,IAAI,MAAM;AAGxB,MAAM,OAAO,MAAS;AAEf,IAAM,kBAAkB;AAAA,EAC7B,CAAC,kBAAkB,GAAG,CAAC,mBAA2B,cAAsB,cAAuB;AAC7F,UAAM,KAAe,EAAE,QAAQ,EAAE;AACjC,UAAM,OAAO,CAAC,IAAI;AAElB,UAAM,OAAO,GAAG,QAAQ,IAAI,OAAO,WAAW,mBAAmB,MAAM;AACvE,WAAO,UAAU,MAAM,QAAQ,mBAAmB,EAAE;AAEpD,UAAM,OAAO,GAAG,QAAQ,IAAI,OAAO,WAAW,cAAc,MAAM;AAClE,WAAO,UAAU,MAAM,QAAQ,cAAc,EAAE;AAE/C,QAAI,kBAAkB,WAAW,cAAc;AAC/C,QAAI,kBAAkB,GAAG;AACvB,gBAAU,KAAK,MAAM,QAAQ,GAAG,QAAQ,GAAG,eAAe;AAAA,IAC5D;AAEA,WAAO,MAAM,OAAO,SAAS,GAAG,GAAG,SAAS,eAAe;AAAA,EAC7D;AAAA,EAEA,CAAC,cAAc,GAAG,CAAC,MAAc,UAAkB,OAAO;AACxD,UAAM,KAAe,EAAE,QAAQ,EAAE;AACjC,UAAM,OAAO,CAAC,IAAI;AAElB,WAAO,OAAO,MAAM,QAAQ,MAAM,EAAE;AACpC,WAAO,OAAO,MAAM,QAAQ,SAAS,EAAE;AAEvC,WAAO,MAAM,OAAO,SAAS,GAAG,GAAG,MAAM;AAAA,EAC3C;AAAA,EAEA,CAAC,mBAAmB,GAAG,CAAC,UAAoB;AAC1C,WAAO,CAAC,qBAAqB,GAAG,KAAK;AAAA,EACvC;AAAA,EAEA,KAAK,CAAC,MAAgB,MAAuB,SAAe,eAAqC;AAC/F,UAAM,KAAe,EAAE,QAAQ,EAAE;AACjC,UAAM,OAAO,CAAC,IAAI;AAElB,QAAI,OAAQ,SAAU,UAAU;AAC9B,aAAO,OAAO,MAAM,QAAQ,MAAgB,EAAE;AAAA,IAEhD,OAAO;AACL,aAAO,OAAO,MAAM,QAAQ,MAAM,EAAE;AAAA,IACtC;AAEA,QAAI,YAAY,QAAW;AAEzB,YAAM,WAAW;AAQjB,UAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAM,UAAU,MAAM,MAAM;AAAA,MAC9B;AAGA,YAAM,oBAAoB,MAAM,KAAK,SAAS,OAAO,GAAG,MAAM,EAAE;AAEhE,aAAO,MAAM,OAAO,SAAS,GAAG,iBAAiB;AAAA,IAEnD,WAAW,eAAe,QAAW;AAGnC,YAAM,OAAO,IAAI,YAAY,GAAG,MAAM;AACtC,aAAO,MAAM,OAAO,SAAS,GAAG,GAAG,SAAS,WAAW,UAAU;AAAA,IAEnE,OAAO;AACL,aAAO,MAAM,OAAO,SAAS,GAAG,GAAG,MAAM;AAAA,IAC3C;AAAA,EACF;AAEF;",
|
|
6
6
|
"names": ["Protocol", "ErrorCode", "IpcProtocol"]
|
|
7
7
|
}
|
package/build/Room.d.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
1
|
import http, { IncomingMessage } from 'http';
|
|
5
|
-
import
|
|
6
|
-
import Clock from '@gamestdio/timer';
|
|
2
|
+
import Clock from '@colyseus/timer';
|
|
7
3
|
import { EventEmitter } from 'events';
|
|
8
|
-
import { Presence } from './presence/Presence';
|
|
9
|
-
import { Serializer } from './serializer/Serializer';
|
|
10
|
-
import { Deferred } from './utils/Utils';
|
|
11
|
-
import {
|
|
12
|
-
import { Client, ClientArray, ISendOptions } from './Transport';
|
|
4
|
+
import { Presence } from './presence/Presence.js';
|
|
5
|
+
import { Serializer } from './serializer/Serializer.js';
|
|
6
|
+
import { Deferred } from './utils/Utils.js';
|
|
7
|
+
import { RoomCache } from './matchmaker/driver/local/LocalDriver.js';
|
|
8
|
+
import { Client, ClientArray, ClientPrivate, ISendOptions } from './Transport.js';
|
|
13
9
|
export declare const DEFAULT_SEAT_RESERVATION_TIME: number;
|
|
14
10
|
export type SimulationCallback = (deltaTime: number) => void;
|
|
15
11
|
export interface IBroadcastOptions extends ISendOptions {
|
|
@@ -38,7 +34,7 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
38
34
|
*/
|
|
39
35
|
get locked(): boolean;
|
|
40
36
|
get metadata(): Metadata;
|
|
41
|
-
listing:
|
|
37
|
+
listing: RoomCache<Metadata>;
|
|
42
38
|
/**
|
|
43
39
|
* Timing events tied to the room instance.
|
|
44
40
|
* Intervals and timeouts are cleared when the room is disposed.
|
|
@@ -50,6 +46,12 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
50
46
|
* the room will be unlocked as soon as a client disconnects from it.
|
|
51
47
|
*/
|
|
52
48
|
maxClients: number;
|
|
49
|
+
/**
|
|
50
|
+
* Automatically dispose the room when last client disconnects.
|
|
51
|
+
*
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
54
|
+
autoDispose: boolean;
|
|
53
55
|
/**
|
|
54
56
|
* Frequency to send the room state to connected clients, in milliseconds.
|
|
55
57
|
*
|
|
@@ -76,7 +78,7 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
76
78
|
_events: EventEmitter<[never]>;
|
|
77
79
|
protected seatReservationTime: number;
|
|
78
80
|
protected reservedSeats: {
|
|
79
|
-
[sessionId: string]: [any, any];
|
|
81
|
+
[sessionId: string]: [any, any, boolean?, boolean?];
|
|
80
82
|
};
|
|
81
83
|
protected reservedSeatTimeouts: {
|
|
82
84
|
[sessionId: string]: NodeJS.Timeout;
|
|
@@ -89,20 +91,13 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
89
91
|
private _serializer;
|
|
90
92
|
private _afterNextPatchQueue;
|
|
91
93
|
private _simulationInterval;
|
|
92
|
-
private _patchInterval;
|
|
93
94
|
private _internalState;
|
|
94
95
|
private _locked;
|
|
95
96
|
private _lockedExplicitly;
|
|
96
97
|
private _maxClientsReached;
|
|
97
98
|
private _autoDisposeTimeout;
|
|
98
99
|
constructor();
|
|
99
|
-
|
|
100
|
-
* Automatically dispose the room when last client disconnects.
|
|
101
|
-
*
|
|
102
|
-
* @default true
|
|
103
|
-
*/
|
|
104
|
-
get autoDispose(): boolean;
|
|
105
|
-
set autoDispose(value: boolean);
|
|
100
|
+
protected __init(): void;
|
|
106
101
|
/**
|
|
107
102
|
* The name of the room you provided as first argument for `gameServer.define()`.
|
|
108
103
|
*
|
|
@@ -184,6 +179,9 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
184
179
|
* @param delay - Interval delay on executing `onTickCallback` in milliseconds.
|
|
185
180
|
*/
|
|
186
181
|
setSimulationInterval(onTickCallback?: SimulationCallback, delay?: number): void;
|
|
182
|
+
/**
|
|
183
|
+
* @deprecated Use `.patchRate=` instead.
|
|
184
|
+
*/
|
|
187
185
|
setPatchRate(milliseconds: number | null): void;
|
|
188
186
|
setState(newState: State): void;
|
|
189
187
|
setSerializer(serializer: Serializer<State>): void;
|
|
@@ -198,15 +196,17 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
198
196
|
*/
|
|
199
197
|
unlock(): Promise<void>;
|
|
200
198
|
send(client: Client, type: string | number, message: any, options?: ISendOptions): void;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
199
|
+
broadcast(type: string | number, message?: any, options?: IBroadcastOptions): void;
|
|
200
|
+
/**
|
|
201
|
+
* Broadcast bytes (UInt8Arrays) to a particular room
|
|
202
|
+
*/
|
|
203
|
+
broadcastBytes(type: string | number, message: Uint8Array, options: IBroadcastOptions): void;
|
|
204
204
|
/**
|
|
205
205
|
* Checks whether mutations have occurred in the state, and broadcast them to all connected clients.
|
|
206
206
|
*/
|
|
207
207
|
broadcastPatch(): boolean;
|
|
208
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;
|
|
209
|
+
onMessage<T = any>(messageType: string | number, callback: (client: Client<UserData, AuthData>, message: T) => void, validate?: (message: unknown) => T): any;
|
|
210
210
|
/**
|
|
211
211
|
* Disconnect all connected clients, and then dispose the room.
|
|
212
212
|
*
|
|
@@ -214,7 +214,7 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
214
214
|
* @returns Promise<void>
|
|
215
215
|
*/
|
|
216
216
|
disconnect(closeCode?: number): Promise<any>;
|
|
217
|
-
['_onJoin'](client: Client, req?: http.IncomingMessage): Promise<void>;
|
|
217
|
+
['_onJoin'](client: Client & ClientPrivate, req?: http.IncomingMessage): Promise<void>;
|
|
218
218
|
/**
|
|
219
219
|
* Allow the specified client to reconnect into the room. Must be used inside `onLeave()` method.
|
|
220
220
|
* If seconds is provided, the reconnection is going to be cancelled after the provided amount of seconds.
|
|
@@ -228,14 +228,15 @@ export declare abstract class Room<State extends object = any, Metadata = any, U
|
|
|
228
228
|
allowReconnection(previousClient: Client, seconds: number | "manual"): Deferred<Client>;
|
|
229
229
|
protected resetAutoDisposeTimeout(timeoutInSeconds?: number): void;
|
|
230
230
|
private broadcastMessageType;
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
231
|
+
protected sendFullState(client: Client): void;
|
|
232
|
+
protected _dequeueAfterPatchMessages(): void;
|
|
233
|
+
protected _reserveSeat(sessionId: string, joinOptions?: any, authData?: any, seconds?: number, allowReconnection?: boolean, devModeReconnection?: boolean): Promise<boolean>;
|
|
234
|
+
protected _disposeIfEmpty(): boolean;
|
|
235
|
+
protected _dispose(): Promise<any>;
|
|
236
|
+
protected _onMessage(client: Client & ClientPrivate, buffer: Buffer): void;
|
|
237
|
+
protected _forciblyCloseClient(client: Client & ClientPrivate, closeCode: number): void;
|
|
238
|
+
protected _onLeave(client: Client, code?: number): Promise<any>;
|
|
239
|
+
protected _onAfterLeave(client: Client): Promise<void>;
|
|
240
|
+
protected _incrementClientCount(): Promise<void>;
|
|
241
|
+
protected _decrementClientCount(): Promise<boolean>;
|
|
241
242
|
}
|