summaryrefslogtreecommitdiff
path: root/www/external/ng-websocket.min.js
blob: a988667b26aef714e301e5d1ac27ae0c8ee1e63e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"use strict"
!function(){function e(){var e=this
e.$$config={lazy:!1,reconnect:!0,reconnectInterval:2e3,mock:!1,enqueue:!1,protocols:null},e.$setup=function(n){return n=n||{},e.$$config=angular.extend({},e.$$config,n),e},e.$get=["$http",function(t){return new n(e.$$config,t)}]}function n(e,n){var o=this
o.$$websocketList={},o.$$config=e||{},o.$get=function(e){return o.$$websocketList[e]},o.$new=function(e){e=e||{},"string"==typeof e&&(e={url:e},arguments.length>1&&("string"==typeof arguments[1]&&arguments[1].length>0?e.protocols=[arguments[1]]:"object"==typeof arguments[1]&&arguments[1].length>0&&(e.protocols=arguments[1])))
var r=o.$get(e.url)
if("undefined"==typeof r){var $=angular.extend({},o.$$config,e)
r=new t($,n),o.$$websocketList[$.url]=r}return r}}function t(e,n){var t=this
if("undefined"==typeof e||"object"==typeof e&&"undefined"==typeof e.url)throw new Error("An url must be specified for WebSocket")
return t.$$eventMap={},t.$$ws=void 0,t.$$reconnectTask=void 0,t.$$reconnectCopy=!0,t.$$queue=[],t.$$config={url:void 0,lazy:!1,reconnect:!0,reconnectInterval:2e3,enqueue:!1,mock:!1,protocols:null},t.$$fireEvent=function(){var e=[]
Array.prototype.push.apply(e,arguments)
var n=e.shift(),o=t.$$eventMap[n]
if("undefined"!=typeof o)for(var r=0;r<o.length;r++)"function"==typeof o[r]&&o[r].apply(t,e)},t.$$init=function(e){return e.mock?t.$$ws=new o(e.mock,n):e.protocols?t.$$ws=new WebSocket(e.url,e.protocols):t.$$ws=new WebSocket(e.url),t.$$ws.onmessage=function(e){try{var n=JSON.parse(e.data)
t.$$fireEvent(n.event,n.data),t.$$fireEvent("$message",n)}catch(n){t.$$fireEvent("$message",e.data)}},t.$$ws.onerror=function(e){t.$$fireEvent("$error",e)},t.$$ws.onopen=function(){if(t.$$reconnectTask&&(clearInterval(t.$$reconnectTask),delete t.$$reconnectTask),t.$$config.enqueue&&t.$$queue.length>0)for(;t.$$queue.length>0&&t.$ready();)t.$$send(t.$$queue.shift())
t.$$fireEvent("$open")},t.$$ws.onclose=function(){t.$$config.reconnect&&!t.$$reconnectTask&&(t.$$reconnectTask=setInterval(function(){t.$status()===t.$CLOSED&&t.$open()},t.$$config.reconnectInterval)),t.$$fireEvent("$close")},t},t.$CONNECTING=0,t.$OPEN=1,t.$CLOSING=2,t.$CLOSED=3,t.$on=function(){var e=[]
Array.prototype.push.apply(e,arguments)
var n=e.shift()
if("string"!=typeof n||0===e.length)throw new Error("$on accept two parameters at least: a String and a Function or an array of Functions")
t.$$eventMap[n]=t.$$eventMap[n]||[]
for(var o=0;o<e.length;o++)t.$$eventMap[n].push(e[o])
return t},t.$un=function(e){if("string"!=typeof e)throw new Error("$un needs a String representing an event.")
return"undefined"!=typeof t.$$eventMap[e]&&delete t.$$eventMap[e],t},t.$$send=function(e){t.$ready()?t.$$ws.send(JSON.stringify(e)):t.$$config.enqueue&&t.$$queue.push(e)},t.$emit=function(e,n){if("string"!=typeof e)throw new Error("$emit needs two parameter: a String and a Object or a String")
var o={event:e,data:n}
return t.$$send(o),t},t.$open=function(){return t.$$config.reconnect=t.$$reconnectCopy,t.$status()!==t.$OPEN&&t.$$init(t.$$config),t},t.$close=function(){return t.$status()!==t.$CLOSED&&t.$$ws.close(),t.$$reconnectTask&&(clearInterval(t.$$reconnectTask),delete t.$$reconnectTask),t.$$config.reconnect=!1,t},t.$status=function(){return"undefined"==typeof t.$$ws?t.$CLOSED:t.$$ws.readyState},t.$ready=function(){return t.$status()===t.$OPEN},t.$mockup=function(){return t.$$config.mock},t.$$config=angular.extend({},t.$$config,e),t.$$reconnectCopy=t.$$config.reconnect,t.$$config.lazy||t.$$init(t.$$config),t}function o(e,n){e=e||{}
var t=this,o=e.openTimeout||500,r=e.closeTimeout||1e3,$=e.messageInterval||2e3,c=e.fixtures||{},a=[]
t.CONNECTING=0,t.OPEN=1,t.CLOSING=2,t.CLOSED=3,t.readyState=t.CONNECTING,t.send=function(e){if(t.readyState===t.OPEN)return a.push(e),t
throw new Error("WebSocket is already in CLOSING or CLOSED state.")},t.close=function(){return t.readyState===t.OPEN&&(t.readyState=t.CLOSING,setTimeout(function(){t.readyState=t.CLOSED,t.onclose()},r)),t},t.onmessage=function(){},t.onerror=function(){},t.onopen=function(){},t.onclose=function(){},setInterval(function(){if(a.length>0){var e=a.shift(),n=JSON.parse(e)
switch(n.event){case"$close":t.close()
break
default:"undefined"!=typeof c[n.event]&&(n.data=c[n.event].data||n.data,n.event=c[n.event].event||n.event),e=JSON.stringify(n),t.onmessage({data:e})}}},$)
var i=function(e){e=e||{},e=e instanceof Error?{}:e,c=e,setTimeout(function(){t.readyState=t.OPEN,t.onopen()},o)}
return"string"==typeof c?n.get(c).success(i).error(i):i(c),t}angular.module("ngWebsocket",[]).provider("$websocket",e)}()