@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
JavaScript
"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