diff --git a/apps/server/eslint.config.mjs b/apps/server/eslint.config.mjs index f2adfcd..e50ff7f 100644 --- a/apps/server/eslint.config.mjs +++ b/apps/server/eslint.config.mjs @@ -21,6 +21,29 @@ }, rules: { 'local/prefer-relative-for-local-server-path': 'warn', + 'no-restricted-imports': [ + 'error', + { + paths: [ + { + name: 'socket.io', + message: + 'socket.io の import は network 配下のみにしてください。', + }, + { + name: 'socket.io-client', + message: + 'socket.io-client の import は network 配下のみにしてください。', + }, + ], + }, + ], + }, + }, + { + files: ['src/network/**/*.ts'], + rules: { + 'no-restricted-imports': 'off', }, }, ]; \ No newline at end of file diff --git a/apps/server/src/domains/game/handlers/onDisconnect.ts b/apps/server/src/domains/game/handlers/onDisconnect.ts deleted file mode 100644 index 579bcec..0000000 --- a/apps/server/src/domains/game/handlers/onDisconnect.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Server } from "socket.io"; -import { GameManager } from "@server/domains/game/GameManager"; -import { disconnectUseCase } from "@server/domains/game/application/useCases/disconnectUseCase"; -import { createEmitToAll } from "@server/network/adapters/socketEmitters"; - -const getEmitToAll = (io: Server) => createEmitToAll(io); - -export const onDisconnect = ( - io: Server, - gameManager: GameManager, - playerId: string -) => { - const emitToAll = getEmitToAll(io); - - disconnectUseCase({ - gameManager, - playerId, - emitToAll, - }); -}; diff --git a/apps/server/src/domains/game/handlers/onMove.ts b/apps/server/src/domains/game/handlers/onMove.ts deleted file mode 100644 index b07d713..0000000 --- a/apps/server/src/domains/game/handlers/onMove.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { GameManager } from "@server/domains/game/GameManager"; -import type { playerTypes } from "@repo/shared"; -import { movePlayerUseCase } from "@server/domains/game/application/useCases/movePlayerUseCase"; - -export const onMove = ( - gameManager: GameManager, - playerId: string, - data: playerTypes.MovePayload -) => { - movePlayerUseCase({ - gameManager, - playerId, - move: data, - }); -}; diff --git a/apps/server/src/domains/game/handlers/onPing.ts b/apps/server/src/domains/game/handlers/onPing.ts deleted file mode 100644 index e95998d..0000000 --- a/apps/server/src/domains/game/handlers/onPing.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Socket } from "socket.io"; -import { pingUseCase } from "@server/domains/game/application/useCases/pingUseCase"; -import { createEmitToSocket } from "@server/network/adapters/socketEmitters"; - -const getEmitToSocket = (socket: Socket) => createEmitToSocket(socket); - -export const onPing = (socket: Socket, clientTime: number) => { - const emitToSocket = getEmitToSocket(socket); - - pingUseCase({ - clientTime, - emitToSocket, - }); -}; diff --git a/apps/server/src/domains/game/handlers/onReadyForGame.ts b/apps/server/src/domains/game/handlers/onReadyForGame.ts deleted file mode 100644 index 3f88132..0000000 --- a/apps/server/src/domains/game/handlers/onReadyForGame.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Socket } from "socket.io"; -import { GameManager } from "@server/domains/game/GameManager"; -import { readyForGameUseCase } from "@server/domains/game/application/useCases/readyForGameUseCase"; -import { createEmitToSocket } from "@server/network/adapters/socketEmitters"; - -const getEmitToSocket = (socket: Socket) => createEmitToSocket(socket); - -export const onReadyForGame = ( - socket: Socket, - gameManager: GameManager -) => { - const roomId = Array.from(socket.rooms).find((room) => room !== socket.id); - const emitToSocket = getEmitToSocket(socket); - - readyForGameUseCase({ - socketId: socket.id, - roomId, - gameManager, - emitToSocket, - }); -}; diff --git a/apps/server/src/domains/game/handlers/onStartGame.ts b/apps/server/src/domains/game/handlers/onStartGame.ts deleted file mode 100644 index 62efb9e..0000000 --- a/apps/server/src/domains/game/handlers/onStartGame.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Server } from "socket.io"; -import { GameManager } from "@server/domains/game/GameManager"; -import { RoomManager } from "@server/domains/room/RoomManager"; -import { startGameUseCase } from "@server/domains/game/application/useCases/startGameUseCase"; -import { createEmitToRoom } from "@server/network/adapters/socketEmitters"; - -const getEmitToRoom = (io: Server) => createEmitToRoom(io); - -export const onStartGame = ( - io: Server, - gameManager: GameManager, - roomManager: RoomManager, - ownerId: string -) => { - const emitToRoom = getEmitToRoom(io); - - startGameUseCase({ - ownerId, - gameManager, - roomManager, - emitToRoom, - }); -}; diff --git a/apps/server/src/index.ts b/apps/server/src/index.ts index 55840bf..526da54 100644 --- a/apps/server/src/index.ts +++ b/apps/server/src/index.ts @@ -1,8 +1,8 @@ -import { Server } from "socket.io"; import { createServer } from "http"; import { GameManager } from "./domains/game/GameManager"; import { RoomManager } from "./domains/room/RoomManager"; import { SocketManager } from "./network/SocketManager"; +import { createIo } from "./network/createIo"; import { config } from "@repo/shared"; // サーバー待受ポート @@ -20,13 +20,7 @@ res.writeHead(404, { "Content-Type": "text/plain; charset=utf-8" }); res.end("not found"); }); -const io = new Server(httpServer, { - cors: { - // 開発環境向け全オリジン許可設定 - origin: config.NETWORK_CONFIG.CORS_ORIGIN, - methods: [...config.NETWORK_CONFIG.CORS_METHODS] - }, -}); +const io = createIo(httpServer); // ゲーム管理・通信管理クラス初期化 const gameManager = new GameManager(); diff --git a/apps/server/src/network/SocketManager.ts b/apps/server/src/network/SocketManager.ts index 56ce860..6ab7ad5 100644 --- a/apps/server/src/network/SocketManager.ts +++ b/apps/server/src/network/SocketManager.ts @@ -2,8 +2,8 @@ import { GameManager } from "@server/domains/game/GameManager"; import { RoomManager } from "@server/domains/room/RoomManager"; import { protocol } from "@repo/shared"; -import { registerRoomHandlers, handleRoomDisconnect } from "@server/network/handlers/RoomHandler"; -import { registerGameHandlers, handleGameDisconnect } from "@server/network/handlers/GameHandler"; +import { registerRoomHandlers, handleRoomDisconnect } from "./handlers/RoomHandler"; +import { registerGameHandlers, handleGameDisconnect } from "./handlers/GameHandler"; export class SocketManager { private io: Server; diff --git a/apps/server/src/network/createIo.ts b/apps/server/src/network/createIo.ts new file mode 100644 index 0000000..e77fb86 --- /dev/null +++ b/apps/server/src/network/createIo.ts @@ -0,0 +1,12 @@ +import { Server } from "socket.io"; +import { config } from "@repo/shared"; +import type { Server as HttpServer } from "http"; + +export const createIo = (httpServer: HttpServer) => { + return new Server(httpServer, { + cors: { + origin: config.NETWORK_CONFIG.CORS_ORIGIN, + methods: [...config.NETWORK_CONFIG.CORS_METHODS], + }, + }); +};