diff --git a/apps/server/src/domains/game/application/adapters/createGameEmitters.ts b/apps/server/src/domains/game/application/adapters/createGameEmitters.ts deleted file mode 100644 index 32439b9..0000000 --- a/apps/server/src/domains/game/application/adapters/createGameEmitters.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Server, Socket } from "socket.io"; - -type EmitPayload = unknown; - -const emitWithOptionalPayload = ( - emit: (event: string, payload?: EmitPayload) => void, - event: string, - payload?: EmitPayload -) => { - if (payload === undefined) { - emit(event); - return; - } - - emit(event, payload); -}; - -export const createEmitToRoom = (io: Server) => { - return (roomId: string, event: string, payload?: EmitPayload) => { - emitWithOptionalPayload((eventName, body) => io.to(roomId).emit(eventName, body), event, payload); - }; -}; - -export const createEmitToSocket = (socket: Socket) => { - return (event: string, payload?: EmitPayload) => { - emitWithOptionalPayload((eventName, body) => socket.emit(eventName, body), event, payload); - }; -}; - -export const createEmitToAll = (io: Server) => { - return (event: string, payload?: EmitPayload) => { - emitWithOptionalPayload((eventName, body) => io.emit(eventName, body), event, payload); - }; -}; diff --git a/apps/server/src/domains/game/handlers/onDisconnect.ts b/apps/server/src/domains/game/handlers/onDisconnect.ts index 0756c37..579bcec 100644 --- a/apps/server/src/domains/game/handlers/onDisconnect.ts +++ b/apps/server/src/domains/game/handlers/onDisconnect.ts @@ -1,14 +1,16 @@ import { Server } from "socket.io"; import { GameManager } from "@server/domains/game/GameManager"; import { disconnectUseCase } from "@server/domains/game/application/useCases/disconnectUseCase"; -import { createEmitToAll } from "../application/adapters/createGameEmitters"; +import { createEmitToAll } from "@server/network/adapters/socketEmitters"; + +const getEmitToAll = (io: Server) => createEmitToAll(io); export const onDisconnect = ( io: Server, gameManager: GameManager, playerId: string ) => { - const emitToAll = createEmitToAll(io); + const emitToAll = getEmitToAll(io); disconnectUseCase({ gameManager, diff --git a/apps/server/src/domains/game/handlers/onPing.ts b/apps/server/src/domains/game/handlers/onPing.ts index e50c659..e95998d 100644 --- a/apps/server/src/domains/game/handlers/onPing.ts +++ b/apps/server/src/domains/game/handlers/onPing.ts @@ -1,9 +1,11 @@ import { Socket } from "socket.io"; import { pingUseCase } from "@server/domains/game/application/useCases/pingUseCase"; -import { createEmitToSocket } from "../application/adapters/createGameEmitters"; +import { createEmitToSocket } from "@server/network/adapters/socketEmitters"; + +const getEmitToSocket = (socket: Socket) => createEmitToSocket(socket); export const onPing = (socket: Socket, clientTime: number) => { - const emitToSocket = createEmitToSocket(socket); + const emitToSocket = getEmitToSocket(socket); pingUseCase({ clientTime, diff --git a/apps/server/src/domains/game/handlers/onReadyForGame.ts b/apps/server/src/domains/game/handlers/onReadyForGame.ts index 5ab8152..3f88132 100644 --- a/apps/server/src/domains/game/handlers/onReadyForGame.ts +++ b/apps/server/src/domains/game/handlers/onReadyForGame.ts @@ -1,14 +1,16 @@ import { Socket } from "socket.io"; import { GameManager } from "@server/domains/game/GameManager"; import { readyForGameUseCase } from "@server/domains/game/application/useCases/readyForGameUseCase"; -import { createEmitToSocket } from "../application/adapters/createGameEmitters"; +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 = createEmitToSocket(socket); + const emitToSocket = getEmitToSocket(socket); readyForGameUseCase({ socketId: socket.id, diff --git a/apps/server/src/domains/game/handlers/onStartGame.ts b/apps/server/src/domains/game/handlers/onStartGame.ts index a3b9a08..62efb9e 100644 --- a/apps/server/src/domains/game/handlers/onStartGame.ts +++ b/apps/server/src/domains/game/handlers/onStartGame.ts @@ -2,7 +2,9 @@ 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 "../application/adapters/createGameEmitters"; +import { createEmitToRoom } from "@server/network/adapters/socketEmitters"; + +const getEmitToRoom = (io: Server) => createEmitToRoom(io); export const onStartGame = ( io: Server, @@ -10,7 +12,7 @@ roomManager: RoomManager, ownerId: string ) => { - const emitToRoom = createEmitToRoom(io); + const emitToRoom = getEmitToRoom(io); startGameUseCase({ ownerId, diff --git a/apps/server/src/domains/room/RoomHandler.ts b/apps/server/src/domains/room/RoomHandler.ts index 9483894..8e70325 100644 --- a/apps/server/src/domains/room/RoomHandler.ts +++ b/apps/server/src/domains/room/RoomHandler.ts @@ -4,10 +4,12 @@ import type { roomTypes } from "@repo/shared"; import { joinRoomUseCase } from "./application/useCases/joinRoomUseCase"; import { roomDisconnectUseCase } from "./application/useCases/roomDisconnectUseCase"; -import { createEmitToRoom } from "./application/adapters/createEmitToRoom"; +import { createEmitToRoom } from "@server/network/adapters/socketEmitters"; + +const getEmitToRoom = (io: Server) => createEmitToRoom(io); export const registerRoomHandlers = (io: Server, socket: Socket, roomManager: RoomManager) => { - const emitToRoom = createEmitToRoom(io); + const emitToRoom = getEmitToRoom(io); socket.on(protocol.SocketEvents.JOIN_ROOM, (data: roomTypes.JoinRoomPayload) => { const { roomId } = data; @@ -28,7 +30,7 @@ * 切断時のルームクリーンアップ処理 */ export const handleRoomDisconnect = (io: Server, socket: Socket, roomManager: RoomManager) => { - const emitToRoom = createEmitToRoom(io); + const emitToRoom = getEmitToRoom(io); roomDisconnectUseCase({ roomManager, diff --git a/apps/server/src/domains/room/application/adapters/createEmitToRoom.ts b/apps/server/src/domains/room/application/adapters/createEmitToRoom.ts deleted file mode 100644 index abab427..0000000 --- a/apps/server/src/domains/room/application/adapters/createEmitToRoom.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Server } from "socket.io"; - -export type EmitToRoom = (roomId: string, event: string, payload?: unknown) => void; - -export const createEmitToRoom = (io: Server): EmitToRoom => { - return (roomId, event, payload) => { - if (payload === undefined) { - io.to(roomId).emit(event); - return; - } - - io.to(roomId).emit(event, payload); - }; -}; diff --git a/apps/server/src/network/adapters/socketEmitters.ts b/apps/server/src/network/adapters/socketEmitters.ts new file mode 100644 index 0000000..32439b9 --- /dev/null +++ b/apps/server/src/network/adapters/socketEmitters.ts @@ -0,0 +1,34 @@ +import { Server, Socket } from "socket.io"; + +type EmitPayload = unknown; + +const emitWithOptionalPayload = ( + emit: (event: string, payload?: EmitPayload) => void, + event: string, + payload?: EmitPayload +) => { + if (payload === undefined) { + emit(event); + return; + } + + emit(event, payload); +}; + +export const createEmitToRoom = (io: Server) => { + return (roomId: string, event: string, payload?: EmitPayload) => { + emitWithOptionalPayload((eventName, body) => io.to(roomId).emit(eventName, body), event, payload); + }; +}; + +export const createEmitToSocket = (socket: Socket) => { + return (event: string, payload?: EmitPayload) => { + emitWithOptionalPayload((eventName, body) => socket.emit(eventName, body), event, payload); + }; +}; + +export const createEmitToAll = (io: Server) => { + return (event: string, payload?: EmitPayload) => { + emitWithOptionalPayload((eventName, body) => io.emit(eventName, body), event, payload); + }; +};