aboutsummaryrefslogtreecommitdiff
path: root/src/ServerUtils.ts
blob: 715341ab38cb5a65678da6deb0ae6f781d26effa (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) => void) {
        socket.on(message.Message, Utils.loggingCallback('Incoming', handler, message.Name));
    }

    export function AddServerHandlerCallback<T>(socket: Socket, message: Message<T>, handler: (args: [T, (res: unknown) => void]) => void) {
        socket.on(message.Message, (arg: T, fn: (res: unknown) => void) => {
            Utils.log('S receiving', message.Name, arg, true);
            handler([arg, Utils.loggingCallback('Sending', fn, message.Name)]);
        });
    }
    export type RoomHandler = (socket: Socket, room: string) => void;
    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 => handler(socket, room));
    }
}