ws2801-webserver
Version:
A ready-to-use webserver for the WS2801-Pi package.
39 lines (28 loc) • 944 B
text/typescript
import Http from 'http';
import {Server as SocketIo} from 'socket.io';
import uuid from 'uuid';
// tslint:disable-next-line: no-any
type ListenerFunction = (...args: Array<any>) => void;
type Listener = {
event: string,
callback: ListenerFunction;
};
export class SocketIoServer {
private socketIo: SocketIo;
private listeners: {[id: string]: Listener} = {};
constructor(httpServer: Http.Server) {
this.socketIo = new SocketIo(httpServer);
}
// tslint:disable-next-line: no-any
public send(event: string, data?: any): void {
this.socketIo.emit(event, data);
}
public listen(event: string, callback: ListenerFunction): void {
this.listeners[uuid.v4()] = {event: event, callback: callback};
this.socketIo.on(event, callback);
}
public removeListener(id: string): void {
const listener: Listener = this.listeners[id];
this.socketIo.removeListener(listener.event, listener.callback);
}
}