UNPKG

@hapiness/core

Version:

Project to have a HapiJS (https://hapijs.com/) based framework to create easier NodeJS back-end with some awesome features

74 lines 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class WebSocketRooms { constructor() { this.rooms = {}; } /** * Return rooms object * * @returns {Rooms} rooms */ getRooms() { return this.rooms; } /** * Test if a room already exists * * @param {string} room * @return boolean */ exists(room) { return !!this.rooms[room]; } /** * Join a room with a socket * * @param {string} room * @param {Socket} socket * @returns Socket */ join(room, socket) { if (!this.exists(room)) { this.rooms[room] = []; } this.rooms[room].push(socket); return socket; } /** * Leave room with a socket * * @param {string} room * @param {Socket} socket * @returns Socket */ leave(room, socket) { if (!this.exists(room)) { return; } const socketIndex = this.rooms[room].indexOf(socket); if (socketIndex > -1) { this.rooms[room].splice(socketIndex, 1); } return socket; } /** * Emit a message to one room * * @param {string} room * @param {string} event * @param {any} data * @returns WebSocketRooms */ emit(room, event, data) { if (!this.exists(room)) { return; } this.rooms[room].forEach(socket => { socket.emit(event, data); }); return this; } } exports.WebSocketRooms = WebSocketRooms; //# sourceMappingURL=rooms.js.map