diff --git a/webpack/lib/audio-manager.js b/webpack/lib/audio-manager.js index d616894..b0d4edd 100644 --- a/webpack/lib/audio-manager.js +++ b/webpack/lib/audio-manager.js @@ -30,50 +30,8 @@ export default class AudioManager{ /* (6) Create output + bind gain */ this.output = this.ctx.destination; - /* (7) Create websocket connection */ - this.ws = new WebSocket('wss://ws.douscord.xdrm.io/audio/2'); - - /* (8) Manage websocket requests */ - this._ws = { - stack: [], - send: function(_data){ - if( this.ws.readyState !== 1 ){ // not connected -> stack - console.warn(`push stack`); - return this._ws.stack.push(_data); - } - - console.warn(`send buffer[${_data.length}]`); - this.ws.send(_data); - }.bind(this) - }; - - /* (9) Manage websocket message stack */ - this.ws.onopen = function(){ - console.warn(`pop stack of size ${this._ws.stack.length}`); - - while( this._ws.stack.length > 0 ) - this.ws.send(this._ws.stack.shift()); - }.bind(this); - - - /* (10) Manage websocket responses */ - this.ws.onmessage = function(_msg){ - console.warn(`received`, _msg.data); - - if( !(_msg.data instanceof Blob) ) - return console.warn('NIQUE'); - - let fr = new FileReader(); - - fr.onload = function(){ - let buf16 = new Int16Array(fr.result); - this.receive(buf16); - - }.bind(this); - - fr.readAsArrayBuffer(_msg.data); - - }.bind(this); + /* (7) Initialise websocket */ + this.ws = null; @@ -140,8 +98,11 @@ export default class AudioManager{ let buf16 = this.f32toi16(buf32); - console.log(`read buffer[${buf16.length}]`); - this._ws.send(buf16); + if( this.ws ) + console.log(`send buffer[${buf16.length}]`); + else + console.log(`websocket not connected`); + this.ws && this.ws.send(buf16); } @@ -214,10 +175,48 @@ export default class AudioManager{ } + + /* (8) Connect websocket + * + * @address Websocket address + * + ---------------------------------------------------------*/ + wsconnect(_addr){ + + /* (1) Create websocket connection */ + this.ws = new WebSocket(_addr); + + /* (2) Manage websocket responses */ + this.ws.onmessage = function(_msg){ + console.warn(`received`, _msg.data); + + if( !(_msg.data instanceof Blob) ) + return console.warn('[NaB] Not A Blob'); + + let fr = new FileReader(); + + fr.onload = function(){ + + let buf16 = new Int16Array(fr.result); + this.receive(buf16); + + }.bind(this); + + fr.readAsArrayBuffer(_msg.data); + + }.bind(this); + + } + + + /* (x) Access microphone + launch all * ---------------------------------------------------------*/ - launch(){ + launch(wsAddress='wss://ws.douscord.xdrm.io/audio/2'){ + + /* (1) Start websocket */ + this.wsconnect(wsAddress); window.recorder = null;