UNPKG

video-auth-js-sdk

Version:

A SDK to authenticate users with camera through a realtime stream

110 lines (97 loc) 3.71 kB
import Utility from "./utility/utility"; class Messenger { constructor(app) { this._app = app; this._requestsList = []; } sendMessage({ message, serverName, pushMsgType=3, onTimeout = null, timeoutTime = 0, onResponse = null, onError = null }){ message.token = this._app.params.token; // let uniqueId; if (!message.uniqueId) { message.uniqueId = Utility.generateUUID(); } /** * Message to send through async SDK * * + MessageWrapperVO {object} * - type {int} Type of ASYNC message based on content * + content {string} * -peerName {string} Name of receiver Peer * -receivers[] {int} Array of receiver peer ids (if you use this, peerName will be ignored) * -priority {int} Priority of message 1-10, lower has more priority * -messageId {int} Id of message on your side, not required * -ttl {int} Time to live for message in milliseconds * -content {string} Chat Message goes here after stringifying * - trackId {int} Tracker id of message that you receive from DIRANA previously (if you are replying a sync message) */ let data = { type: (pushMsgType > 0) ? pushMsgType : 3, content: { peerName: serverName, priority: 1, content: JSON.stringify(message), ttl: this._app.params.messageTtl }, uniqueId: message.uniqueId }; this._app.async.send(data); if(timeoutTime) { this._requestsList.push({ uniqueId: message.uniqueId, data, onTimeout, onResponse, onError }); setTimeout(()=>{ onTimeout && onTimeout(); }, timeoutTime); } return { uniqueId: message.uniqueId } } requestExists(uniqueId){ return !!this._requestsList.some(item => item.uniqueId == uniqueId); } removeRequest(uniqueId){ for(let i in this._requestsList) { if(this._requestsList[i].uniqueId == uniqueId) delete this._requestsList[i]; } } getRequest(uniqueId){ return this._requestsList.find(item => item.uniqueId == uniqueId); } sendAiMessage(message) { return this.sendMessage({message, serverName: this._app.params.serverName}); } sendCallMessage(message, onTimeout, timeoutTime, onResponse){ return this.sendMessage({message, onTimeout, timeoutTime, onResponse, serverName: this._app.authSessionInfo.kurentoAddress}); } processResponse(message){ const req = this._requestsList.find(item => item.uniqueId == message.content.uniqueId); if(req) { req.onTimeout = null; if (!req.multipleResponse) { const ind = this._requestsList.findIndex(item => item.uniqueId == message.content.uniqueId); ind && delete this._requestsList[ind]; } req.onResponse && req.onResponse(message); } } clearRequests(){ this._requestsList = []; } } export default Messenger