aboutsummaryrefslogtreecommitdiff
path: root/src/ServerUtils.ts
blob: ade4ca35d309b09059987e9de6c544fa8efa21d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { Socket } from 'socket.io';
import { Message } from './server/Message';
import { Utils } from './Utils';

export namespace ServerUtils {
    export function Emit<T>(socket: Socket, message: Message<T>, args: T) {
        Utils.log('Emit', message.Name, args, false);
        socket.emit(message.Message, args);
    }

    export function AddServerHandler<T>(socket: Socket, message: Message<T>, handler: (args: T) => any) {
        socket.on(message.Message, Utils.loggingCallback('Incoming', handler, message.Name));
    }

    export function AddServerHandlerCallback<T>(socket: Socket, message: Message<T>, 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));
    }
}