/**
* SocketManager
* Socket.IO接続ハンドラの登録を初期化するマネージャ
*/
import { Server } from "socket.io";
import type {
SocketConnectionManagerBundle,
SocketConnectionRoomPort,
SocketConnectionRuntimePort,
} from "./types/connectionPorts";
import { registerConnectionHandlers } from "./handlers";
/** Socket.IOの接続ハンドラ登録を統括する */
export class SocketManager {
private io: Server;
private managers: SocketConnectionManagerBundle;
constructor(
io: Server,
roomManager: SocketConnectionRoomPort,
runtimeRegistry: SocketConnectionRuntimePort
) {
this.io = io;
this.managers = {
roomManager,
runtimeRegistry,
};
}
public initialize() {
// 接続時に必要な各ドメインハンドラを登録する
registerConnectionHandlers({
io: this.io,
...this.managers,
});
}
}