{"version":3,"file":"./themes/observador-child/assets/build/js/socket-proxy/socket-proxy.min.js","mappings":"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","sources":["webpack://wp-content/./themes/observador-child/assets/src/js/socket-proxy/_socketProxy.js"],"sourcesContent":["//TODO: Ligação pode falhar. Pode retornar 429 ou 500\n\n/* Sockets Proxy\n\nThis socket doesn't process messages, you get the full control over the messages received. This is a read-only socket\nThis sockets only handles connects, reconnects and disconnects (regarding to sockets only)\n\nUsage Example:\n var a = socketProxy.getInstance();\n\n //subscribes to this topic if no websocket is initiated\n var a = socketProxy.getInstance(['with-topic']);\n\n a.addEventListener(\"open\",function(e){}) //when socket connects. raw event\n a.addEventListener(\"close\",function(e){}) //when socket gets errors.\n a.addEventListener(\"message\",function(e){}) //when socket gets messages. raw event with request id\n\n a.unsubscribeToTopics(topic: Array) : number //returns request id (use it with on message event to see if request was successfull)\n a.subscribeToTopics(topic: Array) : number\n\nExample code:\n\n var obsSocket = socketProxy.getInstance([\"radio\"]); //subscribe with radio\n\n obsSocket.addEventListener(\"error\",function() {\n })\n\n var anotherMessageId = obsSocket.subscribeToTopics([\"topic\"])\n var anotherMessageId = obsSocket.unsubscribeToTopics([\"radio\",\"topic\"])\n\n obsSocket.addEventListener(\"message\",function(data) {\n data = JSON.parse(data);\n if(data.topic == \"radio\") {\n if(data.uid == messageId && data.data.kind == \"reply\") {\n websocketConnected = true;\n }\n }\n if(data.kind == \"publish\" && data.data.topic == \"radio\") {\n if(mainPlayer.getAudioType() == \"stream\") {\n updateMediaSessionWS(data.data.message);\n }\n }\n })\n\n*/\nwindow.socketProxy = (function () {\n /*if(!\"http://localhost:9997/\") {\n console.warn(\"variable not set on config file. Please add it\");\n return;\n }*/\n\n var socketURL = \"wss://\" + globalSettings.obsIps.webSocket + \"/ws\";\n //var socketURL = \"ws://\" + \"localhost:9997\" + \"/ws\";\n var instance = null;\n var socketInstance = null;\n var lastRequestId = \"\";\n var reconnect = true;\n var maxConsecutiveFailCount = 5;\n var consecutiveFailCount = 0;\n var subscribedTopics = []; //subscribe radio by default\n var isReconnecting = false;\n\n var callbacks = {\n open: {}, //array of callbacks\n message: {}, //array of callbacks [\"asdasd\"] = 1;\n close: {}, //array of callbacks\n reconnect_failed: {},\n push: function (eventName, cb) {\n var randomId = \"s_\" + new Date().getTime();\n //Create wrapper function for events\n callbacks[eventName][randomId] = function (incomingEvent) {\n if (incomingEvent) {\n cb(incomingEvent.data || incomingEvent);\n } else {\n cb();\n }\n };\n\n if (socketInstance && eventName != \"reconnect_failed\" && eventName != \"reconnect_success\") {\n socketInstance.addEventListener(eventName, callbacks[eventName][randomId]);\n }\n return randomId;\n },\n pop: function (eventName, id) {\n var cb = callbacks[eventName][id];\n socketInstance.removeEventListener(eventName, cb);\n delete callbacks[eventName][id];\n },\n };\n\n function fakeReconnect() {\n console.warn(\"[sockets] This is a fake reconnect\");\n socketInstance.close();\n isReconnecting = true;\n for (var k in callbacks.reconnect_failed) {\n if (callbacks.reconnect_failed[k]) {\n var cb = callbacks.reconnect_failed[k];\n cb();\n }\n }\n setTimeout(reconnectSocket, 20000);\n }\n\n function fakeFailedReconnect() {\n console.warn(\"[sockets] This is a fake reconnect\");\n socketInstance.close();\n consecutiveFailCount = maxConsecutiveFailCount;\n isReconnecting = false;\n for (var k in callbacks.reconnect_failed) {\n if (callbacks.reconnect_failed[k]) {\n var cb = callbacks.reconnect_failed[k];\n cb();\n }\n }\n }\n function reconnectSocket() {\n if (!reconnect) return;\n isReconnecting = true;\n //Start a new connection; Attach the events again\n console.log(\"[close] Connection reconnecting\");\n initSocketInstance(null, true);\n for (var k in callbacks.open) {\n if (callbacks.open[k]) {\n var cb = callbacks.open[k];\n socketInstance.addEventListener(\"open\", cb);\n }\n }\n\n for (var k in callbacks.message) {\n if (callbacks.message[k]) {\n var cb = callbacks.message[k];\n socketInstance.addEventListener(\"message\", cb);\n }\n }\n\n for (var k in callbacks.close) {\n if (callbacks.close[k]) {\n var cb = callbacks.close[k];\n socketInstance.addEventListener(\"close\", cb);\n }\n }\n }\n\n //Reconnect calls this\n function initSocketInstance(topics, reconnect) {\n if (!reconnect) {\n if (!Array.isArray(topics) || topics.length == 0) return;\n subscribedTopics = topics;\n isReconnecting = false;\n }\n socketInstance = new WebSocket(\n socketURL +\n \"?\" +\n subscribedTopics\n .map(function (topic) {\n return \"topics=\" + topic;\n })\n .join(\"&\")\n );\n\n if (reconnect) {\n isReconnecting = true;\n } else {\n }\n //window.sockets = socketInstance; //TODO: Remove this\n\n //socketInstance = new WebSocket(socketURL);\n\n socketInstance.addEventListener(\"open\", function (event) {});\n\n socketInstance.addEventListener(\"close\", function (event) {\n socketInstance = null;\n if (event.wasClean) {\n console.log(\"[close] Connection closed cleanly\", event.code, event.reason);\n } else {\n //Fabio, well done!\n consecutiveFailCount++;\n isReconnecting = true;\n if (consecutiveFailCount >= maxConsecutiveFailCount) {\n console.log(\"[close] Too many reconnects. Aborting\", event.code, event.reason);\n isReconnecting = false;\n //Run reconnect_failed cb\n for (var k in callbacks.reconnect_failed) {\n if (callbacks.reconnect_failed[k]) {\n var cb = callbacks.reconnect_failed[k];\n cb();\n }\n }\n\n return;\n }\n console.log(\"[close] Connection closed abruptly. Reconnecting\", event.code, event.reason);\n\n setTimeout(reconnectSocket, Math.pow(5000, consecutiveFailCount));\n }\n });\n\n socketInstance.addEventListener(\"message\", function (event) {\n consecutiveFailCount = 0;\n });\n }\n\n function construtor(topics) {\n if (!socketInstance) {\n initSocketInstance(topics);\n }\n\n function sendToSocket(action, params) {\n lastRequestId = \"m_\" + Date.now();\n\n var message = {\n uid: lastRequestId,\n action: action,\n params: params,\n };\n\n if (socketInstance.readyState === 0) {\n //0 == CONNECTING\n socketInstance.addEventListener(\"open\", function () {\n socketInstance.send(JSON.stringify(message));\n });\n } else {\n socketInstance.send(JSON.stringify(message));\n }\n return lastRequestId;\n }\n\n function subscribeToTopics(topics) {\n topics.forEach(function (t) {\n //check for subscribed topics\n if (subscribedTopics.indexOf(t) == -1) {\n subscribedTopics.push(t);\n }\n });\n if (topics.length > 0) {\n var request_id = sendToSocket(\"subscribe\", { topics: topics });\n return request_id;\n }\n }\n\n function socketIsReconnecting() {\n return isReconnecting;\n }\n\n function sendReplay(topics) {\n var request_id = sendToSocket(\"replay\", { topics: topics });\n return request_id;\n }\n\n function unsubscribeToTopics(topics) {\n topics.forEach(function (topic) {\n //check for subscribed topics\n if (subscribedTopics.indexOf(topic) > -1) {\n var idx = subscribedTopics.indexOf(topic);\n subscribedTopics.splice(idx, 1);\n }\n });\n\n sendToSocket(\"unsubscribe\", { topics: topics });\n return lastRequestId;\n }\n\n //Accepts an object\n function addEventListener(event, callback) {\n var allowed_events = [\"open\", \"message\", \"close\", \"reconnect_failed\"];\n if (allowed_events.indexOf(event) > -1) {\n var idx = callbacks.push(event, callback);\n return idx;\n }\n return null;\n }\n\n function removeEventListener(event, id) {\n var allowed_events = [\"open\", \"message\", \"close\", \"reconnect_failed\"];\n if (allowed_events.indexOf(event) > -1) {\n callbacks.pop(event, id);\n return true;\n }\n return false;\n }\n\n return {\n socketIsReconnecting: socketIsReconnecting,\n sendReplay: sendReplay,\n unsubscribeToTopics: unsubscribeToTopics,\n subscribeToTopics: subscribeToTopics,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n };\n }\n\n return {\n getInstance: function (topics) {\n //var lastRequestId = null;\n if (!instance) {\n lastRequestId = \"connect\";\n instance = construtor(topics);\n } else {\n lastRequestId = instance.subscribeToTopics(topics);\n }\n return { instance: instance, lastRequestId: lastRequestId };\n },\n fakeReconnect: fakeReconnect,\n fakeFailedReconnect: fakeFailedReconnect,\n };\n})();\n"],"names":["window","socketProxy","socketURL","globalSettings","obsIps","webSocket","instance","socketInstance","lastRequestId","reconnect","maxConsecutiveFailCount","consecutiveFailCount","subscribedTopics","isReconnecting","callbacks","open","message","close","reconnect_failed","push","eventName","cb","randomId","Date","getTime","incomingEvent","data","addEventListener","pop","id","removeEventListener","reconnectSocket","k","console","log","initSocketInstance","topics","Array","isArray","length","WebSocket","map","topic","join","event","wasClean","code","reason","setTimeout","Math","pow","getInstance","subscribeToTopics","sendToSocket","action","params","uid","now","readyState","send","JSON","stringify","socketIsReconnecting","sendReplay","unsubscribeToTopics","forEach","indexOf","idx","splice","t","callback","construtor","fakeReconnect","warn","fakeFailedReconnect"],"sourceRoot":""}