diff --git a/.env.example b/.env.example index 26c9b7d..f20cafb 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,9 @@ VUE_APP_GUITARIX_HOST=127.0.0.1 VUE_APP_GUITARIX_PORT=5000 +VUE_APP_WEBSOCKET_USE_BINARY_FORMAT=0 + # comma seperated VUE_APP_GUITARIX_IGNORE_FX=dubber,mbc,mbchor,mbclip,mbcs,mbd,mbdel,mbe,oscilloscope,seq -VUE_APP_DISABLE_LOGGER=0 \ No newline at end of file +VUE_APP_DISABLE_LOGGER=0 diff --git a/src/plugins/guitarix.js b/src/plugins/guitarix.js index f5b713f..5b76cfc 100644 --- a/src/plugins/guitarix.js +++ b/src/plugins/guitarix.js @@ -11,11 +11,16 @@ const { logger } = utils const GUITARIX_NAMESPACE = 'guitarix' -const { VUE_APP_GUITARIX_IGNORE_FX: FX_IGNORE_LIST } = process.env +const { + VUE_APP_GUITARIX_IGNORE_FX: FX_IGNORE_LIST, + VUE_APP_WEBSOCKET_USE_BINARY_FORMAT: WEBSOCKET_USE_BINARY_FORMAT +} = process.env // clean up fx ids const fxIgnoreList = FX_IGNORE_LIST.split(',').map(fx => fx.trim()) +const useWebsocketBinaryFormat = ['1', 'true', true].includes(WEBSOCKET_USE_BINARY_FORMAT.trim()) + const methodsRequiringIds = [ 'banks', 'get', @@ -92,9 +97,11 @@ class GuitarixSocket { this._attemptReconnect() } - _onMessage (response) { + async _onMessage (response) { try { - var msg = JSON.parse(response.data) + const jsonString = useWebsocketBinaryFormat ? await response.data.text() : response.data + + var msg = JSON.parse(jsonString) logger('RX: ', msg) } catch (e) { logger('EX: ', e) @@ -167,7 +174,10 @@ class GuitarixSocket { if (this._connected) { logger('TX: ', msg) - this._socket.send(JSON.stringify(msg)) + const jsonString = JSON.stringify(msg) + const payload = useWebsocketBinaryFormat ? new Blob([jsonString + '\n']) : jsonString + + this._socket.send(payload) } else { this._queue.unshift(msg) }