Эх сурвалжийг харах

WebSocket: добавлен метод get-config

Book Pauk 5 жил өмнө
parent
commit
00cc63b7cd

+ 14 - 2
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;
     }
 }

+ 2 - 5
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 = {};

+ 1 - 1
client/api/WebSocketConnection.js → client/api/webSocketConnection.js

@@ -169,4 +169,4 @@ class WebSocketConnection {
     }
 }
 
-export default WebSocketConnection;
+export default new WebSocketConnection();

+ 12 - 0
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`);