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",
|
||||
"license": "AGPL-3.0-only",
|
||||
"dependencies": {
|
||||
"@socket.io/admin-ui": "^0.5.1",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv": "^16.4.5",
|
||||
"express": "^5.0.0-beta.3",
|
||||
|
@ -223,6 +224,37 @@
|
|||
"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": {
|
||||
"version": "3.1.2",
|
||||
"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==",
|
||||
"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": {
|
||||
"version": "1.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
|
||||
|
@ -701,6 +739,12 @@
|
|||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||
"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": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.6.0.tgz",
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"author": "JK Effects",
|
||||
"license": "AGPL-3.0-only",
|
||||
"dependencies": {
|
||||
"@socket.io/admin-ui": "^0.5.1",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv": "^16.4.5",
|
||||
"express": "^5.0.0-beta.3",
|
||||
|
|
|
@ -8,7 +8,7 @@ export default (io: Server, socket: Socket) => {
|
|||
"mission:join",
|
||||
handleEvent(
|
||||
{ type: "read", section: "operation", module: "mission" },
|
||||
async (data: any) => {
|
||||
async (data: string, initialized: boolean) => {
|
||||
socket.rooms.forEach((room) => {
|
||||
if (room !== socket.id && room != "home") {
|
||||
socket.leave(room);
|
||||
|
@ -40,10 +40,14 @@ export default (io: Server, socket: Socket) => {
|
|||
const mission = MissionMap.read(data);
|
||||
|
||||
socket.join(data);
|
||||
socket.emit("status-mission:join", { status: "success" });
|
||||
|
||||
if (!initialized) {
|
||||
socket.emit("package-mission", Y.encodeStateAsUpdate(mission.doc));
|
||||
}
|
||||
|
||||
return {
|
||||
type: "package-mission",
|
||||
answer: Y.encodeStateAsUpdate(mission.doc),
|
||||
type: "status-mission:join",
|
||||
answer: { status: "success" },
|
||||
};
|
||||
} catch (error) {
|
||||
return { type: "status-join:join", answer: { status: "failed", msg: error.message } };
|
||||
|
|
|
@ -27,10 +27,10 @@ type PermissionPass =
|
|||
|
||||
export let handleEvent = (
|
||||
permissions: PermissionPass,
|
||||
handler: (params: any) => Promise<EventResponseType>,
|
||||
handler: (...args: any[]) => Promise<EventResponseType>,
|
||||
socket: Socket
|
||||
) => {
|
||||
return async (args: any) => {
|
||||
return async (...args: any[]) => {
|
||||
try {
|
||||
const socketData = SocketMap.read(socket.id);
|
||||
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 == "") {
|
||||
socket.emit(type, answer);
|
||||
} else {
|
||||
|
|
|
@ -5,6 +5,7 @@ import authenticateSocket from "./middleware/authenticateSocket";
|
|||
import base from "./endpoints/base";
|
||||
import perRequestCheck from "./middleware/perRequestCheck";
|
||||
import missionManagement from "./endpoints/missionManagement";
|
||||
import { instrument } from "@socket.io/admin-ui";
|
||||
|
||||
export default abstract class SocketServer {
|
||||
private static io: Server;
|
||||
|
@ -17,6 +18,10 @@ export default abstract class SocketServer {
|
|||
credentials: true,
|
||||
},
|
||||
});
|
||||
instrument(this.io, {
|
||||
auth: false,
|
||||
mode: "development",
|
||||
});
|
||||
|
||||
this.io.engine.use(helmet());
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue