import socketIo,{Socket} from "socket.io"; import {Server} from "http"; import {AppMasterSocketsType,AppMasterSocketsConfig,SocketActionCreator} from "./types"; export interface AppMasterSockets extends AppMasterSocketsType {} export class AppMasterSockets { constructor(config:AppMasterSocketsConfig,server:Server){ const io = socketIo(server); const {events} = config; const createSocket = (s:Socket,action?:SocketActionCreator) => action?action(io,s):undefined; io.on("connection",(socket:Socket) => events.forEach(({name,action}) => socket.on(name,createSocket(socket,action)))); return io;}} export default AppMasterSockets;