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
28
|
import { Socket } from 'socket.io';
import { Message } from './server/Message';
import { Utils } from './Utils';
// eslint-disable-next-line @typescript-eslint/no-namespace
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('S 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));
}
}
|