finishing touches
This commit is contained in:
@@ -41,7 +41,7 @@ export abstract class BaseService<T> {
|
||||
}
|
||||
|
||||
getErrorResult(errorMessage: string, error?: unknown): ServiceResult<string> {
|
||||
logWarning(errorMessage);
|
||||
logWarning(errorMessage, error);
|
||||
return {
|
||||
result: errorMessage,
|
||||
successful: false,
|
||||
|
||||
16
src/ws.ts
16
src/ws.ts
@@ -10,31 +10,15 @@ export type WsClientChangeCallback = (clients: number) => void;
|
||||
|
||||
export class WsService {
|
||||
private clients: Set<WebSocket> = new Set();
|
||||
private listeners: WsClientChangeCallback[] = [];
|
||||
|
||||
onClientChange(callback: WsClientChangeCallback): () => void {
|
||||
this.listeners.push(callback);
|
||||
return () => {
|
||||
this.listeners = this.listeners.filter((cb) => cb !== callback);
|
||||
};
|
||||
}
|
||||
|
||||
private emitClientChange(): void {
|
||||
for (const callback of this.listeners) {
|
||||
callback(this.clients.size);
|
||||
}
|
||||
}
|
||||
|
||||
addClient(ws: WebSocket): void {
|
||||
this.clients.add(ws);
|
||||
logInfo(`Socket connected. Total clients: ${this.clients.size}`);
|
||||
this.emitClientChange();
|
||||
}
|
||||
|
||||
removeClient(ws: WebSocket): void {
|
||||
this.clients.delete(ws);
|
||||
logInfo(`Socket disconnected. Total clients: ${this.clients.size}`);
|
||||
this.emitClientChange();
|
||||
}
|
||||
|
||||
broadcast(message: WsEvent): void {
|
||||
|
||||
Reference in New Issue
Block a user