intermediate: sync
This commit is contained in:
parent
87f078a80e
commit
1646d0d6ca
5 changed files with 61 additions and 7 deletions
44
package-lock.json
generated
44
package-lock.json
generated
|
@ -9,6 +9,7 @@
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@socket.io/admin-ui": "^0.5.1",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^5.0.0-beta.3",
|
"express": "^5.0.0-beta.3",
|
||||||
|
@ -223,6 +224,37 @@
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@socket.io/admin-ui": {
|
||||||
|
"version": "0.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@socket.io/admin-ui/-/admin-ui-0.5.1.tgz",
|
||||||
|
"integrity": "sha512-1dlGL2FGm6T+uL1e6iDvbo2eCINwvW7iVbjIblwh5kPPRM1SP8lmZrbFZf4QNJ/cqQ+JLcx49eXGM9WAB4TK7w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/bcryptjs": "^2.4.2",
|
||||||
|
"bcryptjs": "^2.4.3",
|
||||||
|
"debug": "~4.3.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"socket.io": ">=3.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@socket.io/admin-ui/node_modules/debug": {
|
||||||
|
"version": "4.3.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
||||||
|
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"ms": "^2.1.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"supports-color": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@socket.io/component-emitter": {
|
"node_modules/@socket.io/component-emitter": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
||||||
|
@ -267,6 +299,12 @@
|
||||||
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
|
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
|
||||||
"devOptional": true
|
"devOptional": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/bcryptjs": {
|
||||||
|
"version": "2.4.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz",
|
||||||
|
"integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@types/body-parser": {
|
"node_modules/@types/body-parser": {
|
||||||
"version": "1.19.5",
|
"version": "1.19.5",
|
||||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
|
||||||
|
@ -701,6 +739,12 @@
|
||||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/bcryptjs": {
|
||||||
|
"version": "2.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
|
||||||
|
"integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/better-sqlite3": {
|
"node_modules/better-sqlite3": {
|
||||||
"version": "9.6.0",
|
"version": "9.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.6.0.tgz",
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
"author": "JK Effects",
|
"author": "JK Effects",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@socket.io/admin-ui": "^0.5.1",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^5.0.0-beta.3",
|
"express": "^5.0.0-beta.3",
|
||||||
|
|
|
@ -8,7 +8,7 @@ export default (io: Server, socket: Socket) => {
|
||||||
"mission:join",
|
"mission:join",
|
||||||
handleEvent(
|
handleEvent(
|
||||||
{ type: "read", section: "operation", module: "mission" },
|
{ type: "read", section: "operation", module: "mission" },
|
||||||
async (data: any) => {
|
async (data: string, initialized: boolean) => {
|
||||||
socket.rooms.forEach((room) => {
|
socket.rooms.forEach((room) => {
|
||||||
if (room !== socket.id && room != "home") {
|
if (room !== socket.id && room != "home") {
|
||||||
socket.leave(room);
|
socket.leave(room);
|
||||||
|
@ -40,10 +40,14 @@ export default (io: Server, socket: Socket) => {
|
||||||
const mission = MissionMap.read(data);
|
const mission = MissionMap.read(data);
|
||||||
|
|
||||||
socket.join(data);
|
socket.join(data);
|
||||||
socket.emit("status-mission:join", { status: "success" });
|
|
||||||
|
if (!initialized) {
|
||||||
|
socket.emit("package-mission", Y.encodeStateAsUpdate(mission.doc));
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
type: "package-mission",
|
type: "status-mission:join",
|
||||||
answer: Y.encodeStateAsUpdate(mission.doc),
|
answer: { status: "success" },
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return { type: "status-join:join", answer: { status: "failed", msg: error.message } };
|
return { type: "status-join:join", answer: { status: "failed", msg: error.message } };
|
||||||
|
|
|
@ -27,10 +27,10 @@ type PermissionPass =
|
||||||
|
|
||||||
export let handleEvent = (
|
export let handleEvent = (
|
||||||
permissions: PermissionPass,
|
permissions: PermissionPass,
|
||||||
handler: (params: any) => Promise<EventResponseType>,
|
handler: (...args: any[]) => Promise<EventResponseType>,
|
||||||
socket: Socket
|
socket: Socket
|
||||||
) => {
|
) => {
|
||||||
return async (args: any) => {
|
return async (...args: any[]) => {
|
||||||
try {
|
try {
|
||||||
const socketData = SocketMap.read(socket.id);
|
const socketData = SocketMap.read(socket.id);
|
||||||
if (permissions == "admin") {
|
if (permissions == "admin") {
|
||||||
|
@ -46,7 +46,7 @@ export let handleEvent = (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const { answer, type, room } = await handler(args);
|
const { answer, type, room } = await handler(...args);
|
||||||
if (room === undefined || room == "") {
|
if (room === undefined || room == "") {
|
||||||
socket.emit(type, answer);
|
socket.emit(type, answer);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -5,6 +5,7 @@ import authenticateSocket from "./middleware/authenticateSocket";
|
||||||
import base from "./endpoints/base";
|
import base from "./endpoints/base";
|
||||||
import perRequestCheck from "./middleware/perRequestCheck";
|
import perRequestCheck from "./middleware/perRequestCheck";
|
||||||
import missionManagement from "./endpoints/missionManagement";
|
import missionManagement from "./endpoints/missionManagement";
|
||||||
|
import { instrument } from "@socket.io/admin-ui";
|
||||||
|
|
||||||
export default abstract class SocketServer {
|
export default abstract class SocketServer {
|
||||||
private static io: Server;
|
private static io: Server;
|
||||||
|
@ -17,6 +18,10 @@ export default abstract class SocketServer {
|
||||||
credentials: true,
|
credentials: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
instrument(this.io, {
|
||||||
|
auth: false,
|
||||||
|
mode: "development",
|
||||||
|
});
|
||||||
|
|
||||||
this.io.engine.use(helmet());
|
this.io.engine.use(helmet());
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue