import { Socket } from 'socket.io'; import { Message } from './server/Message'; import { Utils } from './Utils'; export namespace ServerUtils { export function Emit(socket: Socket, message: Message, args: T) { Utils.log('Emit', message.Name, args, false); socket.emit(message.Message, args); } export function AddServerHandler(socket: Socket, message: Message, handler: (args: T) => any) { socket.on(message.Message, Utils.loggingCallback('Incoming', handler, message.Name)); } export function AddServerHandlerCallback(socket: Socket, message: Message, handler: (args: [T, (res: any) => any]) => any) { socket.on(message.Message, (arg: T, fn: (res: any) => any) => { Utils.log('S receiving', message.Name, arg, true); handler([arg, Utils.loggingCallback('S sending', fn, message.Name)]); }); } export type RoomHandler = (socket: Socket, room: string) => any; export type UsedSockets = Socket; export type RoomMessage = 'create or join' | 'created' | 'joined'; export function AddRoomHandler(socket: Socket, message: RoomMessage, handler: RoomHandler) { socket.on(message, (room: any) => handler(socket, room)); } }