diff --git a/client/api/misc.js b/client/api/misc.js index 79d56d0e..1e63138a 100644 --- a/client/api/misc.js +++ b/client/api/misc.js @@ -1,4 +1,5 @@ import axios from 'axios'; +import wsc from './webSocketConnection'; const api = axios.create({ baseURL: '/api' @@ -6,9 +7,20 @@ const api = axios.create({ class Misc { async loadConfig() { - const response = await api.post('/config', {params: [ + + const query = {params: [ 'name', 'version', 'mode', 'maxUploadFileSize', 'useExternalBookConverter', 'branch', - ]}); + ]}; + + try { + await wsc.open(); + return await wsc.message(wsc.send(Object.assign({action: 'get-config'}, query))); + } catch (e) { + console.error(e); + } + + //если WebSocket проблема, работаем по http + const response = await api.post('/config', query); return response.data; } } diff --git a/client/api/reader.js b/client/api/reader.js index 6149a1fc..1ff1e187 100644 --- a/client/api/reader.js +++ b/client/api/reader.js @@ -1,6 +1,6 @@ import axios from 'axios'; import * as utils from '../share/utils'; -import WebSocketConnection from './WebSocketConnection'; +import wsc from './webSocketConnection'; const api = axios.create({ baseURL: '/api/reader' @@ -12,7 +12,6 @@ const workerApi = axios.create({ class Reader { constructor() { - this.wsc = new WebSocketConnection(); } async getStateFinish(workerId, callback) { @@ -21,7 +20,6 @@ class Reader { let response = {}; try { - const wsc = this.wsc; await wsc.open(); const requestId = wsc.send({action: 'worker-get-state-finish', workerId}); @@ -35,11 +33,10 @@ class Reader { } return response; } catch (e) { - // console.error(e); } - //с WebSocket проблема, проверяем по http + //если WebSocket проблема, работаем по http const refreshPause = 500; let i = 0; response = {}; diff --git a/client/api/WebSocketConnection.js b/client/api/webSocketConnection.js similarity index 99% rename from client/api/WebSocketConnection.js rename to client/api/webSocketConnection.js index a3a67f2b..e5b79789 100644 --- a/client/api/WebSocketConnection.js +++ b/client/api/webSocketConnection.js @@ -169,4 +169,4 @@ class WebSocketConnection { } } -export default WebSocketConnection; \ No newline at end of file +export default new WebSocketConnection(); \ No newline at end of file diff --git a/server/controllers/WebSocketController.js b/server/controllers/WebSocketController.js index 1c9728c9..a3f18098 100644 --- a/server/controllers/WebSocketController.js +++ b/server/controllers/WebSocketController.js @@ -1,4 +1,6 @@ const WebSocket = require ('ws'); +const _ = require('lodash'); + const WorkerState = require('../core/WorkerState');//singleton const utils = require('../core/utils'); @@ -42,6 +44,8 @@ class WebSocketController { switch (req.action) { case 'test': this.test(req, ws); break; + case 'get-config': + this.getConfig(req, ws); break; case 'worker-get-state': this.workerGetState(req, ws); break; case 'worker-get-state-finish': @@ -70,6 +74,14 @@ class WebSocketController { this.send({message: 'Liberama project is awesome'}, req, ws); } + async getConfig(req, ws) { + if (Array.isArray(req.params)) { + this.send(_.pick(this.config, req.params), req, ws); + } else { + throw new Error('params is not an array'); + } + } + async workerGetState(req, ws) { if (!req.workerId) throw new Error(`key 'workerId' is wrong`);