=this._reconnectionAttempts)h("reconnect failed"),this.backoff.reset(),this.emitAll("reconnect_failed"),this.reconnecting=!1;else{var e=this.backoff.duration();h("will wait %dms before reconnect attempt",e),this.reconnecting=!0;var n=setTimeout(function(){t.skipReconnect||(h("attempting reconnect"),t.emitAll("reconnect_attempt",t.backoff.attempts),t.emitAll("reconnecting",t.backoff.attempts),t.skipReconnect||t.open(function(e){e?(h("reconnect attempt error"),t.reconnecting=!1,t.reconnect(),t.emitAll("reconnect_error",e.data)):(h("reconnect success"),t.onreconnect())}))},e);this.subs.push({destroy:function(){clearTimeout(n)}})}},r.prototype.onreconnect=function(){var t=this.backoff.attempts;this.reconnecting=!1,this.backoff.reset(),this.updateSocketIds(),this.emitAll("reconnect",t)}},function(t,e,n){t.exports=n(14),t.exports.parser=n(21)},function(t,e,n){function r(t,e){return this instanceof r?(e=e||{},t&&"object"==typeof t&&(e=t,t=null),t?(t=u(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=u(e.host).host),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.agent=e.agent||!1,this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?443:80),this.query=e.query||{},"string"==typeof this.query&&(this.query=h.decode(this.query)),this.upgrade=!1!==e.upgrade,this.path=(e.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!e.forceJSONP,this.jsonp=!1!==e.jsonp,this.forceBase64=!!e.forceBase64,this.enablesXDR=!!e.enablesXDR,this.timestampParam=e.timestampParam||"t",this.timestampRequests=e.timestampRequests,this.transports=e.transports||["polling","websocket"],this.transportOptions=e.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=e.policyPort||843,this.rememberUpgrade=e.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=e.onlyBinaryUpgrades,this.perMessageDeflate=!1!==e.perMessageDeflate&&(e.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=e.pfx||null,this.key=e.key||null,this.passphrase=e.passphrase||null,this.cert=e.cert||null,this.ca=e.ca||null,this.ciphers=e.ciphers||null,this.rejectUnauthorized=void 0===e.rejectUnauthorized||e.rejectUnauthorized,this.forceNode=!!e.forceNode,this.isReactNative="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),("undefined"==typeof self||this.isReactNative)&&(e.extraHeaders&&Object.keys(e.extraHeaders).length>0&&(this.extraHeaders=e.extraHeaders),e.localAddress&&(this.localAddress=e.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,void this.open()):new r(t,e)}function o(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var i=n(15),s=n(8),a=n(3)("engine.io-client:socket"),c=n(35),p=n(21),u=n(2),h=n(29);t.exports=r,r.priorWebsocketSuccess=!1,s(r.prototype),r.protocol=p.protocol,r.Socket=r,r.Transport=n(20),r.transports=n(15),r.parser=n(21),r.prototype.createTransport=function(t){a('creating transport "%s"',t);var e=o(this.query);e.EIO=p.protocol,e.transport=t;var n=this.transportOptions[t]||{};this.id&&(e.sid=this.id);var r=new i[t]({query:e,socket:this,agent:n.agent||this.agent,hostname:n.hostname||this.hostname,port:n.port||this.port,secure:n.secure||this.secure,path:n.path||this.path,forceJSONP:n.forceJSONP||this.forceJSONP,jsonp:n.jsonp||this.jsonp,forceBase64:n.forceBase64||this.forceBase64,enablesXDR:n.enablesXDR||this.enablesXDR,timestampRequests:n.timestampRequests||this.timestampRequests,timestampParam:n.timestampParam||this.timestampParam,policyPort:n.policyPort||this.policyPort,pfx:n.pfx||this.pfx,key:n.key||this.key,passphrase:n.passphrase||this.passphrase,cert:n.cert||this.cert,ca:n.ca||this.ca,ciphers:n.ciphers||this.ciphers,rejectUnauthorized:n.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:n.perMessageDeflate||this.perMessageDeflate,extraHeaders:n.extraHeaders||this.extraHeaders,forceNode:n.forceNode||this.forceNode,localAddress:n.localAddress||this.localAddress,requestTimeout:n.requestTimeout||this.requestTimeout,protocols:n.protocols||void 0,isReactNative:this.isReactNative});return r},r.prototype.open=function(){var t;if(this.rememberUpgrade&&r.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else{if(0===this.transports.length){var e=this;return void setTimeout(function(){e.emit("error","No transports available")},0)}t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(n){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)},r.prototype.setTransport=function(t){a("setting transport %s",t.name);var e=this;this.transport&&(a("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=t,t.on("drain",function(){e.onDrain()}).on("packet",function(t){e.onPacket(t)}).on("error",function(t){e.onError(t)}).on("close",function(){e.onClose("transport close")})},r.prototype.probe=function(t){function e(){if(f.onlyBinaryUpgrades){var e=!this.supportsBinary&&f.transport.supportsBinary;h=h||e}h||(a('probe transport "%s" opened',t),u.send([{type:"ping",data:"probe"}]),u.once("packet",function(e){if(!h)if("pong"===e.type&&"probe"===e.data){if(a('probe transport "%s" pong',t),f.upgrading=!0,f.emit("upgrading",u),!u)return;r.priorWebsocketSuccess="websocket"===u.name,a('pausing current transport "%s"',f.transport.name),f.transport.pause(function(){h||"closed"!==f.readyState&&(a("changing transport and sending upgrade packet"),p(),f.setTransport(u),u.send([{type:"upgrade"}]),f.emit("upgrade",u),u=null,f.upgrading=!1,f.flush())})}else{a('probe transport "%s" failed',t);var n=new Error("probe error");n.transport=u.name,f.emit("upgradeError",n)}}))}function n(){h||(h=!0,p(),u.close(),u=null)}function o(e){var r=new Error("probe error: "+e);r.transport=u.name,n(),a('probe transport "%s" failed because of error: %s',t,e),f.emit("upgradeError",r)}function i(){o("transport closed")}function s(){o("socket closed")}function c(t){u&&t.name!==u.name&&(a('"%s" works - aborting "%s"',t.name,u.name),n())}function p(){u.removeListener("open",e),u.removeListener("error",o),u.removeListener("close",i),f.removeListener("close",s),f.removeListener("upgrading",c)}a('probing transport "%s"',t);var u=this.createTransport(t,{probe:1}),h=!1,f=this;r.priorWebsocketSuccess=!1,u.once("open",e),u.once("error",o),u.once("close",i),this.once("close",s),this.once("upgrading",c),u.open()},r.prototype.onOpen=function(){if(a("socket open"),this.readyState="open",r.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){a("starting upgrade probes");for(var t=0,e=this.upgrades.length;t1?{type:b[o],data:t.substring(1)}:{type:b[o]}:w}var i=new Uint8Array(t),o=i[0],s=f(t,1);return k&&"blob"===n&&(s=new k([s])),{type:b[o],data:s}},e.decodeBase64Packet=function(t,e){var n=b[t.charAt(0)];if(!p)return{type:n,data:{base64:!0,data:t.substr(1)}};var r=p.decode(t.substr(1));return"blob"===e&&k&&(r=new k([r])),{type:n,data:r}},e.encodePayload=function(t,n,r){function o(t){return t.length+":"+t}function i(t,r){e.encodePacket(t,!!s&&n,!1,function(t){r(null,o(t))})}"function"==typeof n&&(r=n,n=null);var s=h(t);return n&&s?k&&!g?e.encodePayloadAsBlob(t,r):e.encodePayloadAsArrayBuffer(t,r):t.length?void c(t,i,function(t,e){return r(e.join(""))}):r("0:")},e.decodePayload=function(t,n,r){if("string"!=typeof t)return e.decodePayloadAsBinary(t,n,r);"function"==typeof n&&(r=n,n=null);var o;if(""===t)return r(w,0,1);for(var i,s,a="",c=0,p=t.length;c0;){for(var s=new Uint8Array(o),a=0===s[0],c="",p=1;255!==s[p];p++){if(c.length>310)return r(w,0,1);c+=s[p]}o=f(o,2+c.length),c=parseInt(c);var u=f(o,0,c);if(a)try{u=String.fromCharCode.apply(null,new Uint8Array(u))}catch(h){var l=new Uint8Array(u);u="";for(var p=0;pr&&(n=r),e>=r||e>=n||0===r)return new ArrayBuffer(0);for(var o=new Uint8Array(t),i=new Uint8Array(n-e),s=e,a=0;s=55296&&e<=56319&&o65535&&(e-=65536,o+=d(e>>>10&1023|55296),e=56320|1023&e),o+=d(e);return o}function o(t,e){if(t>=55296&&t<=57343){if(e)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value");return!1}return!0}function i(t,e){return d(t>>e&63|128)}function s(t,e){if(0==(4294967168&t))return d(t);var n="";return 0==(4294965248&t)?n=d(t>>6&31|192):0==(4294901760&t)?(o(t,e)||(t=65533),n=d(t>>12&15|224),n+=i(t,6)):0==(4292870144&t)&&(n=d(t>>18&7|240),n+=i(t,12),n+=i(t,6)),n+=d(63&t|128)}function a(t,e){e=e||{};for(var r,o=!1!==e.strict,i=n(t),a=i.length,c=-1,p="";++c=f)throw Error("Invalid byte index");var t=255&h[l];if(l++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function p(t){var e,n,r,i,s;if(l>f)throw Error("Invalid byte index");if(l==f)return!1;if(e=255&h[l],l++,0==(128&e))return e;if(192==(224&e)){if(n=c(),s=(31&e)<<6|n,s>=128)return s;throw Error("Invalid continuation byte")}if(224==(240&e)){if(n=c(),r=c(),s=(15&e)<<12|n<<6|r,s>=2048)return o(s,t)?s:65533;throw Error("Invalid continuation byte")}if(240==(248&e)&&(n=c(),r=c(),i=c(),s=(7&e)<<18|n<<12|r<<6|i,s>=65536&&s<=1114111))return s;throw Error("Invalid UTF-8 detected")}function u(t,e){e=e||{};var o=!1!==e.strict;h=n(t),f=h.length,l=0;for(var i,s=[];(i=p(o))!==!1;)s.push(i);return r(s)}/*! https://mths.be/utf8js v2.1.2 by @mathias */
8 | var h,f,l,d=String.fromCharCode;t.exports={version:"2.1.2",encode:a,decode:u}},function(t,e){!function(){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(256),r=0;r>2],i+=t[(3&r[n])<<4|r[n+1]>>4],i+=t[(15&r[n+1])<<2|r[n+2]>>6],i+=t[63&r[n+2]];return o%3===2?i=i.substring(0,i.length-1)+"=":o%3===1&&(i=i.substring(0,i.length-2)+"=="),i},e.decode=function(t){var e,r,o,i,s,a=.75*t.length,c=t.length,p=0;"="===t[t.length-1]&&(a--,"="===t[t.length-2]&&a--);var u=new ArrayBuffer(a),h=new Uint8Array(u);for(e=0;e>4,h[p++]=(15&o)<<4|i>>2,h[p++]=(3&i)<<6|63&s;return u}}()},function(t,e){function n(t){return t.map(function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var n=new Uint8Array(t.byteLength);n.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=n.buffer}return e}return t})}function r(t,e){e=e||{};var r=new i;return n(t).forEach(function(t){r.append(t)}),e.type?r.getBlob(e.type):r.getBlob()}function o(t,e){return new Blob(n(t),e||{})}var i="undefined"!=typeof i?i:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder&&MozBlobBuilder,s=function(){try{var t=new Blob(["hi"]);return 2===t.size}catch(e){return!1}}(),a=s&&function(){try{var t=new Blob([new Uint8Array([1,2])]);return 2===t.size}catch(e){return!1}}(),c=i&&i.prototype.append&&i.prototype.getBlob;"undefined"!=typeof Blob&&(r.prototype=Blob.prototype,o.prototype=Blob.prototype),t.exports=function(){return s?a?Blob:o:c?r:void 0}()},function(t,e){e.encode=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e},e.decode=function(t){for(var e={},n=t.split("&"),r=0,o=n.length;r0);return e}function r(t){var e=0;for(u=0;u';i=document.createElement(e)}catch(t){i=document.createElement("iframe"),i.name=o.iframeId,i.src="javascript:0"}i.id=o.iframeId,o.form.appendChild(i),o.iframe=i}var o=this;if(!this.form){var i,s=document.createElement("form"),a=document.createElement("textarea"),c=this.iframeId="eio_iframe_"+this.index;s.className="socketio",s.style.position="absolute",s.style.top="-1000px",s.style.left="-1000px",s.target=c,s.method="POST",s.setAttribute("accept-charset","utf-8"),a.name="d",s.appendChild(a),document.body.appendChild(s),this.form=s,this.area=a}this.form.action=this.uri(),r(),t=t.replace(u,"\\\n"),this.area.value=t.replace(p,"\\n");try{this.form.submit()}catch(h){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===o.iframe.readyState&&n()}:this.iframe.onload=n}}).call(e,function(){return this}())},function(t,e,n){function r(t){var e=t&&t.forceBase64;e&&(this.supportsBinary=!1),this.perMessageDeflate=t.perMessageDeflate,this.usingBrowserWebSocket=o&&!t.forceNode,this.protocols=t.protocols,this.usingBrowserWebSocket||(l=i),s.call(this,t)}var o,i,s=n(20),a=n(21),c=n(29),p=n(30),u=n(31),h=n(3)("engine.io-client:websocket");if("undefined"==typeof self)try{i=n(34)}catch(f){}else o=self.WebSocket||self.MozWebSocket;var l=o||i;t.exports=r,p(r,s),r.prototype.name="websocket",r.prototype.supportsBinary=!0,r.prototype.doOpen=function(){if(this.check()){var t=this.uri(),e=this.protocols,n={agent:this.agent,perMessageDeflate:this.perMessageDeflate};n.pfx=this.pfx,n.key=this.key,n.passphrase=this.passphrase,n.cert=this.cert,n.ca=this.ca,n.ciphers=this.ciphers,n.rejectUnauthorized=this.rejectUnauthorized,this.extraHeaders&&(n.headers=this.extraHeaders),this.localAddress&&(n.localAddress=this.localAddress);try{this.ws=this.usingBrowserWebSocket&&!this.isReactNative?e?new l(t,e):new l(t):new l(t,e,n)}catch(r){return this.emit("error",r)}void 0===this.ws.binaryType&&(this.supportsBinary=!1),this.ws.supports&&this.ws.supports.binary?(this.supportsBinary=!0,this.ws.binaryType="nodebuffer"):this.ws.binaryType="arraybuffer",this.addEventListeners()}},r.prototype.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.onOpen()},this.ws.onclose=function(){t.onClose()},this.ws.onmessage=function(e){t.onData(e.data)},this.ws.onerror=function(e){t.onError("websocket error",e)}},r.prototype.write=function(t){function e(){n.emit("flush"),setTimeout(function(){n.writable=!0,n.emit("drain")},0)}var n=this;this.writable=!1;for(var r=t.length,o=0,i=r;o0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-n:t+n}return 0|Math.min(t,this.max)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}}])});
9 | //# sourceMappingURL=socket.io.js.map
--------------------------------------------------------------------------------
/nodejsserver/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wowza-webrtc-group-call",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "accepts": {
8 | "version": "1.3.5",
9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
10 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
11 | "requires": {
12 | "mime-types": "2.1.22",
13 | "negotiator": "0.6.1"
14 | }
15 | },
16 | "after": {
17 | "version": "0.8.2",
18 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
19 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
20 | },
21 | "array-flatten": {
22 | "version": "1.1.1",
23 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
24 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
25 | },
26 | "arraybuffer.slice": {
27 | "version": "0.0.7",
28 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
29 | "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
30 | },
31 | "async-limiter": {
32 | "version": "1.0.0",
33 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
34 | "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
35 | },
36 | "backo2": {
37 | "version": "1.0.2",
38 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
39 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
40 | },
41 | "base64-arraybuffer": {
42 | "version": "0.1.5",
43 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
44 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
45 | },
46 | "base64id": {
47 | "version": "1.0.0",
48 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
49 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY="
50 | },
51 | "better-assert": {
52 | "version": "1.0.2",
53 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
54 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
55 | "requires": {
56 | "callsite": "1.0.0"
57 | }
58 | },
59 | "blob": {
60 | "version": "0.0.5",
61 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
62 | "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
63 | },
64 | "body-parser": {
65 | "version": "1.18.3",
66 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
67 | "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
68 | "requires": {
69 | "bytes": "3.0.0",
70 | "content-type": "1.0.4",
71 | "debug": "2.6.9",
72 | "depd": "1.1.2",
73 | "http-errors": "1.6.3",
74 | "iconv-lite": "0.4.23",
75 | "on-finished": "2.3.0",
76 | "qs": "6.5.2",
77 | "raw-body": "2.3.3",
78 | "type-is": "1.6.16"
79 | }
80 | },
81 | "bytes": {
82 | "version": "3.0.0",
83 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
84 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
85 | },
86 | "callsite": {
87 | "version": "1.0.0",
88 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
89 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
90 | },
91 | "component-bind": {
92 | "version": "1.0.0",
93 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
94 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
95 | },
96 | "component-emitter": {
97 | "version": "1.2.1",
98 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
99 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
100 | },
101 | "component-inherit": {
102 | "version": "0.0.3",
103 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
104 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
105 | },
106 | "content-disposition": {
107 | "version": "0.5.2",
108 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
109 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
110 | },
111 | "content-type": {
112 | "version": "1.0.4",
113 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
114 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
115 | },
116 | "cookie": {
117 | "version": "0.3.1",
118 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
119 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
120 | },
121 | "cookie-signature": {
122 | "version": "1.0.6",
123 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
124 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
125 | },
126 | "debug": {
127 | "version": "2.6.9",
128 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
129 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
130 | "requires": {
131 | "ms": "2.0.0"
132 | }
133 | },
134 | "depd": {
135 | "version": "1.1.2",
136 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
137 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
138 | },
139 | "destroy": {
140 | "version": "1.0.4",
141 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
142 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
143 | },
144 | "ee-first": {
145 | "version": "1.1.1",
146 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
147 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
148 | },
149 | "encodeurl": {
150 | "version": "1.0.2",
151 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
152 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
153 | },
154 | "engine.io": {
155 | "version": "3.3.2",
156 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz",
157 | "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==",
158 | "requires": {
159 | "accepts": "1.3.5",
160 | "base64id": "1.0.0",
161 | "cookie": "0.3.1",
162 | "debug": "3.1.0",
163 | "engine.io-parser": "2.1.3",
164 | "ws": "6.1.4"
165 | },
166 | "dependencies": {
167 | "debug": {
168 | "version": "3.1.0",
169 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
170 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
171 | "requires": {
172 | "ms": "2.0.0"
173 | }
174 | }
175 | }
176 | },
177 | "engine.io-client": {
178 | "version": "3.3.2",
179 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz",
180 | "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==",
181 | "requires": {
182 | "component-emitter": "1.2.1",
183 | "component-inherit": "0.0.3",
184 | "debug": "3.1.0",
185 | "engine.io-parser": "2.1.3",
186 | "has-cors": "1.1.0",
187 | "indexof": "0.0.1",
188 | "parseqs": "0.0.5",
189 | "parseuri": "0.0.5",
190 | "ws": "6.1.4",
191 | "xmlhttprequest-ssl": "1.5.5",
192 | "yeast": "0.1.2"
193 | },
194 | "dependencies": {
195 | "debug": {
196 | "version": "3.1.0",
197 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
198 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
199 | "requires": {
200 | "ms": "2.0.0"
201 | }
202 | }
203 | }
204 | },
205 | "engine.io-parser": {
206 | "version": "2.1.3",
207 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz",
208 | "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
209 | "requires": {
210 | "after": "0.8.2",
211 | "arraybuffer.slice": "0.0.7",
212 | "base64-arraybuffer": "0.1.5",
213 | "blob": "0.0.5",
214 | "has-binary2": "1.0.3"
215 | }
216 | },
217 | "escape-html": {
218 | "version": "1.0.3",
219 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
220 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
221 | },
222 | "etag": {
223 | "version": "1.8.1",
224 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
225 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
226 | },
227 | "express": {
228 | "version": "4.16.4",
229 | "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
230 | "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
231 | "requires": {
232 | "accepts": "1.3.5",
233 | "array-flatten": "1.1.1",
234 | "body-parser": "1.18.3",
235 | "content-disposition": "0.5.2",
236 | "content-type": "1.0.4",
237 | "cookie": "0.3.1",
238 | "cookie-signature": "1.0.6",
239 | "debug": "2.6.9",
240 | "depd": "1.1.2",
241 | "encodeurl": "1.0.2",
242 | "escape-html": "1.0.3",
243 | "etag": "1.8.1",
244 | "finalhandler": "1.1.1",
245 | "fresh": "0.5.2",
246 | "merge-descriptors": "1.0.1",
247 | "methods": "1.1.2",
248 | "on-finished": "2.3.0",
249 | "parseurl": "1.3.2",
250 | "path-to-regexp": "0.1.7",
251 | "proxy-addr": "2.0.4",
252 | "qs": "6.5.2",
253 | "range-parser": "1.2.0",
254 | "safe-buffer": "5.1.2",
255 | "send": "0.16.2",
256 | "serve-static": "1.13.2",
257 | "setprototypeof": "1.1.0",
258 | "statuses": "1.4.0",
259 | "type-is": "1.6.16",
260 | "utils-merge": "1.0.1",
261 | "vary": "1.1.2"
262 | }
263 | },
264 | "finalhandler": {
265 | "version": "1.1.1",
266 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
267 | "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
268 | "requires": {
269 | "debug": "2.6.9",
270 | "encodeurl": "1.0.2",
271 | "escape-html": "1.0.3",
272 | "on-finished": "2.3.0",
273 | "parseurl": "1.3.2",
274 | "statuses": "1.4.0",
275 | "unpipe": "1.0.0"
276 | }
277 | },
278 | "forwarded": {
279 | "version": "0.1.2",
280 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
281 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
282 | },
283 | "fresh": {
284 | "version": "0.5.2",
285 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
286 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
287 | },
288 | "has-binary2": {
289 | "version": "1.0.3",
290 | "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
291 | "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
292 | "requires": {
293 | "isarray": "2.0.1"
294 | }
295 | },
296 | "has-cors": {
297 | "version": "1.1.0",
298 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
299 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
300 | },
301 | "http-errors": {
302 | "version": "1.6.3",
303 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
304 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
305 | "requires": {
306 | "depd": "1.1.2",
307 | "inherits": "2.0.3",
308 | "setprototypeof": "1.1.0",
309 | "statuses": "1.4.0"
310 | }
311 | },
312 | "iconv-lite": {
313 | "version": "0.4.23",
314 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
315 | "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
316 | "requires": {
317 | "safer-buffer": "2.1.2"
318 | }
319 | },
320 | "indexof": {
321 | "version": "0.0.1",
322 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
323 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
324 | },
325 | "inherits": {
326 | "version": "2.0.3",
327 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
328 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
329 | },
330 | "ipaddr.js": {
331 | "version": "1.8.0",
332 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
333 | "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
334 | },
335 | "isarray": {
336 | "version": "2.0.1",
337 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
338 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
339 | },
340 | "media-typer": {
341 | "version": "0.3.0",
342 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
343 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
344 | },
345 | "merge-descriptors": {
346 | "version": "1.0.1",
347 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
348 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
349 | },
350 | "methods": {
351 | "version": "1.1.2",
352 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
353 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
354 | },
355 | "mime": {
356 | "version": "1.4.1",
357 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
358 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
359 | },
360 | "mime-db": {
361 | "version": "1.38.0",
362 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
363 | "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
364 | },
365 | "mime-types": {
366 | "version": "2.1.22",
367 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
368 | "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
369 | "requires": {
370 | "mime-db": "1.38.0"
371 | }
372 | },
373 | "ms": {
374 | "version": "2.0.0",
375 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
376 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
377 | },
378 | "negotiator": {
379 | "version": "0.6.1",
380 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
381 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
382 | },
383 | "object-component": {
384 | "version": "0.0.3",
385 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
386 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
387 | },
388 | "on-finished": {
389 | "version": "2.3.0",
390 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
391 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
392 | "requires": {
393 | "ee-first": "1.1.1"
394 | }
395 | },
396 | "parseqs": {
397 | "version": "0.0.5",
398 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
399 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
400 | "requires": {
401 | "better-assert": "1.0.2"
402 | }
403 | },
404 | "parseuri": {
405 | "version": "0.0.5",
406 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
407 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
408 | "requires": {
409 | "better-assert": "1.0.2"
410 | }
411 | },
412 | "parseurl": {
413 | "version": "1.3.2",
414 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
415 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
416 | },
417 | "path-to-regexp": {
418 | "version": "0.1.7",
419 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
420 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
421 | },
422 | "proxy-addr": {
423 | "version": "2.0.4",
424 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
425 | "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
426 | "requires": {
427 | "forwarded": "0.1.2",
428 | "ipaddr.js": "1.8.0"
429 | }
430 | },
431 | "qs": {
432 | "version": "6.5.2",
433 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
434 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
435 | },
436 | "range-parser": {
437 | "version": "1.2.0",
438 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
439 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
440 | },
441 | "raw-body": {
442 | "version": "2.3.3",
443 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
444 | "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
445 | "requires": {
446 | "bytes": "3.0.0",
447 | "http-errors": "1.6.3",
448 | "iconv-lite": "0.4.23",
449 | "unpipe": "1.0.0"
450 | }
451 | },
452 | "safe-buffer": {
453 | "version": "5.1.2",
454 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
455 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
456 | },
457 | "safer-buffer": {
458 | "version": "2.1.2",
459 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
460 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
461 | },
462 | "send": {
463 | "version": "0.16.2",
464 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
465 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
466 | "requires": {
467 | "debug": "2.6.9",
468 | "depd": "1.1.2",
469 | "destroy": "1.0.4",
470 | "encodeurl": "1.0.2",
471 | "escape-html": "1.0.3",
472 | "etag": "1.8.1",
473 | "fresh": "0.5.2",
474 | "http-errors": "1.6.3",
475 | "mime": "1.4.1",
476 | "ms": "2.0.0",
477 | "on-finished": "2.3.0",
478 | "range-parser": "1.2.0",
479 | "statuses": "1.4.0"
480 | }
481 | },
482 | "serve-static": {
483 | "version": "1.13.2",
484 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
485 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
486 | "requires": {
487 | "encodeurl": "1.0.2",
488 | "escape-html": "1.0.3",
489 | "parseurl": "1.3.2",
490 | "send": "0.16.2"
491 | }
492 | },
493 | "setprototypeof": {
494 | "version": "1.1.0",
495 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
496 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
497 | },
498 | "socket.io": {
499 | "version": "2.2.0",
500 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz",
501 | "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==",
502 | "requires": {
503 | "debug": "4.1.1",
504 | "engine.io": "3.3.2",
505 | "has-binary2": "1.0.3",
506 | "socket.io-adapter": "1.1.1",
507 | "socket.io-client": "2.2.0",
508 | "socket.io-parser": "3.3.0"
509 | },
510 | "dependencies": {
511 | "debug": {
512 | "version": "4.1.1",
513 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
514 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
515 | "requires": {
516 | "ms": "2.1.1"
517 | }
518 | },
519 | "ms": {
520 | "version": "2.1.1",
521 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
522 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
523 | }
524 | }
525 | },
526 | "socket.io-adapter": {
527 | "version": "1.1.1",
528 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
529 | "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs="
530 | },
531 | "socket.io-client": {
532 | "version": "2.2.0",
533 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz",
534 | "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==",
535 | "requires": {
536 | "backo2": "1.0.2",
537 | "base64-arraybuffer": "0.1.5",
538 | "component-bind": "1.0.0",
539 | "component-emitter": "1.2.1",
540 | "debug": "3.1.0",
541 | "engine.io-client": "3.3.2",
542 | "has-binary2": "1.0.3",
543 | "has-cors": "1.1.0",
544 | "indexof": "0.0.1",
545 | "object-component": "0.0.3",
546 | "parseqs": "0.0.5",
547 | "parseuri": "0.0.5",
548 | "socket.io-parser": "3.3.0",
549 | "to-array": "0.1.4"
550 | },
551 | "dependencies": {
552 | "debug": {
553 | "version": "3.1.0",
554 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
555 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
556 | "requires": {
557 | "ms": "2.0.0"
558 | }
559 | }
560 | }
561 | },
562 | "socket.io-parser": {
563 | "version": "3.3.0",
564 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
565 | "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
566 | "requires": {
567 | "component-emitter": "1.2.1",
568 | "debug": "3.1.0",
569 | "isarray": "2.0.1"
570 | },
571 | "dependencies": {
572 | "debug": {
573 | "version": "3.1.0",
574 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
575 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
576 | "requires": {
577 | "ms": "2.0.0"
578 | }
579 | }
580 | }
581 | },
582 | "statuses": {
583 | "version": "1.4.0",
584 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
585 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
586 | },
587 | "to-array": {
588 | "version": "0.1.4",
589 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
590 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
591 | },
592 | "type-is": {
593 | "version": "1.6.16",
594 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
595 | "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
596 | "requires": {
597 | "media-typer": "0.3.0",
598 | "mime-types": "2.1.22"
599 | }
600 | },
601 | "unpipe": {
602 | "version": "1.0.0",
603 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
604 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
605 | },
606 | "utils-merge": {
607 | "version": "1.0.1",
608 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
609 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
610 | },
611 | "vary": {
612 | "version": "1.1.2",
613 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
614 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
615 | },
616 | "ws": {
617 | "version": "6.1.4",
618 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
619 | "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
620 | "requires": {
621 | "async-limiter": "1.0.0"
622 | }
623 | },
624 | "xmlhttprequest-ssl": {
625 | "version": "1.5.5",
626 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
627 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
628 | },
629 | "yeast": {
630 | "version": "0.1.2",
631 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
632 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
633 | }
634 | }
635 | }
636 |
--------------------------------------------------------------------------------
/nodejsserver/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wowza-webrtc-group-call",
3 | "version": "1.0.0",
4 | "description": "Wowza Webrtc Group Call Sample",
5 | "main": "videochat.js",
6 | "dependencies": {
7 | "express": "^4.16.4",
8 | "socket.io": "^2.2.0"
9 | },
10 | "devDependencies": {},
11 | "scripts": {
12 | "test": "echo \"Error: no test specified\" && exit 1"
13 | },
14 | "keywords": [
15 | "Wowza",
16 | "Webrtc",
17 | "Group",
18 | "Call"
19 | ],
20 | "author": "Emre Karataşoğlu",
21 | "license": "MIT"
22 | }
23 |
--------------------------------------------------------------------------------
/nodejsserver/public/beep.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Lethea/wowza-webrtc-group-call-and-chat/19b11b897c9efa4923f4a69693d1cda808f419c2/nodejsserver/public/beep.mp3
--------------------------------------------------------------------------------
/nodejsserver/videochat.js:
--------------------------------------------------------------------------------
1 | var express = require('express')
2 | var app = express();
3 | var server = require('http').createServer(app);
4 | var io = require('socket.io').listen(server);
5 | var roomMembers = new Array();
6 |
7 | app.use(express.static('public'));
8 |
9 | server.listen(3000);
10 | console.log('Server started.');
11 |
12 |
13 | io.sockets.on('connection', clientConnected);
14 |
15 |
16 | function clientConnected(socket) {
17 |
18 | socket.on('disconnect', function () {
19 | console.log('Client ' + socket.handshake.address + ' disconnected.');
20 | io.to(socket.room).emit("message", {type: "user_left", data: socket.nickname});
21 | if (roomMembers[socket.room]) {
22 | roomMembers[socket.room].splice(roomMembers[socket.room].indexOf(socket.nickname), 1);
23 | updateRoomMembers(socket.room);
24 | }
25 | });
26 | socket.on('login', function (data) {
27 | console.log('Client Login ', data);
28 | socket.nickname = data.nickname;
29 | socket.room = data.room;
30 | socket.join(data.nickname);
31 | socket.join(data.room);
32 | socket.broadcast.to(data.room).emit("message", {type: "new_user_login", data: data.nickname});
33 |
34 | if (!roomMembers[socket.room]) {
35 | roomMembers[socket.room] = [];
36 | }
37 | roomMembers[socket.room].push(data.nickname);
38 | updateRoomMembers(socket.room);
39 |
40 |
41 | });
42 |
43 | socket.on('getRoomClients', function () {
44 | io.sockets.to(socket.nickname).emit("message", {type: "get_user_list", data: roomMembers[socket.room]});
45 | })
46 |
47 | socket.on('sendMessage', function (message) {
48 | io.sockets.to(socket.room).emit("message", {
49 | type: "get_message",
50 | data: {nickname: socket.nickname, message: message}
51 | })
52 | });
53 |
54 |
55 | }
56 |
57 | function updateRoomMembers(room) {
58 |
59 | }
60 |
61 |
62 |
--------------------------------------------------------------------------------