Newer
Older
PixelPaintWar / apps / server / src / network / handlers / CommonHandler.ts
/**
 * CommonHandler
 * 各ハンドラで共有する送信関数群を組み立てる
 */
import { Server, Socket } from "socket.io";
import {
  createEmitToAll,
  createEmitToRoom,
  createEmitToRoomExceptSocket,
  createEmitToSocket,
  createEmitToSocketById,
} from "@server/network/adapters/socketEmitters";

/** ハンドラで共通利用する送信コンテキスト */
export type CommonHandlerContext = {
  emitToAll: ReturnType<typeof createEmitToAll>;
  emitToRoom: ReturnType<typeof createEmitToRoom>;
  emitToRoomExceptSocket: ReturnType<typeof createEmitToRoomExceptSocket>;
  emitToSocket: ReturnType<typeof createEmitToSocket>;
  emitToSocketById: ReturnType<typeof createEmitToSocketById>;
};

/** 送信先別のエミッタをまとめた共通コンテキストを生成する */
export const createCommonHandlerContext = (
  io: Server,
  socket: Socket
): CommonHandlerContext => {
  return {
    emitToAll: createEmitToAll(io),
    emitToRoom: createEmitToRoom(io),
    emitToRoomExceptSocket: createEmitToRoomExceptSocket(io),
    emitToSocket: createEmitToSocket(socket),
    emitToSocketById: createEmitToSocketById(io),
  };
};