fuse-box
Version:
Fuse-Box a bundler that does it right
57 lines (55 loc) • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ws_1 = require("ws");
class SocketServer {
constructor(server, fuse) {
this.server = server;
this.fuse = fuse;
this.clients = new Set();
this.fuse.producer.sharedEvents.emit("SocketServerReady", this);
server.on("connection", (ws) => {
this.fuse.context.log.echo("Client connected");
this.clients.add(ws);
ws.on("message", message => {
let input = JSON.parse(message);
if (input.event) {
this.onMessage(ws, input.event, input.data);
}
});
ws.on("close", () => {
this.fuse.context.log.echo("Connection closed");
this.clients.delete(ws);
});
});
}
static createInstance(server, fuse) {
if (!this.server) {
this.server = this.start(server, fuse);
}
return this.server;
}
static getInstance() {
return this.server;
}
static start(server, fuse) {
let wss = new ws_1.Server({ server });
let ss = new SocketServer(wss, fuse);
return ss;
}
static startSocketServer(port, fuse) {
let wss = new ws_1.Server({ port });
this.server = new SocketServer(wss, fuse);
fuse.context.log.echo(`Launching socket server on ${port}`);
return this.server;
}
send(type, data) {
this.clients.forEach(client => {
client.send(JSON.stringify({ type, data }));
});
}
onMessage(client, type, data) {
}
;
}
exports.SocketServer = SocketServer;
//# sourceMappingURL=SocketServer.js.map