UNPKG

@huddle01/web-core

Version:

The Huddle01 Javascript SDK offers a comprehensive suite of methods and event listeners that allow for seamless real-time audio and video communication with minimal coding required.

115 lines (112 loc) 3.59 kB
import { mainLogger } from './chunk-TOCFOGTC.js'; import { EnhancedEventEmitter } from './chunk-BW2DGP4D.js'; // src/Bot.ts var logger = mainLogger.createSubLogger("Bot"); var Bot = class extends EnhancedEventEmitter { /** * Bot Data Consumer */ __botDataConsumer; /** * Bot Data Producer */ __botDataProducer; constructor(data) { super(); this.__botDataConsumer = data.dataConsumer; this.__botDataProducer = data.dataProducer; this.__registerBotDataConsumerEvent(); if (this.__botDataProducer) { this.__registerBotDataProducerEvent(this.__botDataProducer); } } /** * Register the bot data consumer event. */ __registerBotDataConsumerEvent = () => { logger.info("\u{1F514} Setting a new data consumer"); try { this.__botDataConsumer.on("message", (message) => { try { logger.debug("\u{1F514} Bot Data Message", message); const parsedJsonData = JSON.parse(message); if (parsedJsonData.label === "lastN") { this.emit("active-speakers-change", { peerIds: parsedJsonData?.payload?.activeSpeakers ?? [] }); return; } this.emit("received-volatile-data", parsedJsonData); } catch (error) { logger.error("\u274C Error in bot data consumer message", error); } }); this.__botDataConsumer.on("error", (err) => { logger.error("\u274C Bot Data Consumer Error", err); }); this.__botDataConsumer.on("open", () => { logger.info("\u{1F514} Bot Data Consumer Opened"); }); this.__botDataConsumer.on("@close", () => { logger.info("\u{1F514} Bot Data Consumer Closed"); }); } catch (error) { logger.error("Error in setting data consumer", error); } }; /** * Register the bot data producer event. */ __registerBotDataProducerEvent = (dataProducer) => { logger.info("\u{1F514} Setting a new data producer"); try { dataProducer.on("error", (err) => { logger.error("\u274C Bot Data Producer Error", err); }); dataProducer.on("open", () => { logger.info("\u{1F514} Bot Data Producer Opened"); }); dataProducer.on("@close", () => { logger.info("\u{1F514} Bot Data Producer Closed"); }); dataProducer.on("bufferedamountlow", () => { logger.info("\u{1F514} Bot Data Producer bufferedamountlow"); }); } catch (error) { logger.error("Error in setting data producer", error); } }; /** * @description Send data to the bot data producer, if available * @param data - Data to send {string} * @returns {boolean} - Returns true if data is sent, cannot guarantee if data is received as its over UDP. */ sendData = (data) => { try { if (!this.__botDataProducer) { throw new Error("Bot Data Producer is not available"); } const payload = JSON.stringify(data); logger.info("\u{1F514} Sending data to bot's producer", payload); this.__botDataProducer.send(payload); return true; } catch (error) { logger.error("\u274C Error in sending buffer", error); return false; } }; close = () => { try { logger.info("\u{1F514} Closing Bot"); this.__botDataConsumer.close(); if (this.__botDataProducer) { this.__botDataProducer.close(); } this.removeAllListeners(); } catch (error) { logger.error("\u274C Error in closing bot", error); } }; }; var Bot_default = Bot; export { Bot_default };