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

This commit is contained in:
Book Pauk
2020-01-23 15:54:46 +07:00
parent 8df80ce738
commit 00cc63b7cd
4 changed files with 29 additions and 8 deletions

View File

@@ -1,4 +1,5 @@
import axios from 'axios'; import axios from 'axios';
import wsc from './webSocketConnection';
const api = axios.create({ const api = axios.create({
baseURL: '/api' baseURL: '/api'
@@ -6,9 +7,20 @@ const api = axios.create({
class Misc { class Misc {
async loadConfig() { async loadConfig() {
const response = await api.post('/config', {params: [
const query = {params: [
'name', 'version', 'mode', 'maxUploadFileSize', 'useExternalBookConverter', 'branch', '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; return response.data;
} }
} }

View File

@@ -1,6 +1,6 @@
import axios from 'axios'; import axios from 'axios';
import * as utils from '../share/utils'; import * as utils from '../share/utils';
import WebSocketConnection from './WebSocketConnection'; import wsc from './webSocketConnection';
const api = axios.create({ const api = axios.create({
baseURL: '/api/reader' baseURL: '/api/reader'
@@ -12,7 +12,6 @@ const workerApi = axios.create({
class Reader { class Reader {
constructor() { constructor() {
this.wsc = new WebSocketConnection();
} }
async getStateFinish(workerId, callback) { async getStateFinish(workerId, callback) {
@@ -21,7 +20,6 @@ class Reader {
let response = {}; let response = {};
try { try {
const wsc = this.wsc;
await wsc.open(); await wsc.open();
const requestId = wsc.send({action: 'worker-get-state-finish', workerId}); const requestId = wsc.send({action: 'worker-get-state-finish', workerId});
@@ -35,11 +33,10 @@ class Reader {
} }
return response; return response;
} catch (e) { } catch (e) {
//
console.error(e); console.error(e);
} }
//с WebSocket проблема, проверяем по http //если WebSocket проблема, работаем по http
const refreshPause = 500; const refreshPause = 500;
let i = 0; let i = 0;
response = {}; response = {};

View File

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

View File

@@ -1,4 +1,6 @@
const WebSocket = require ('ws'); const WebSocket = require ('ws');
const _ = require('lodash');
const WorkerState = require('../core/WorkerState');//singleton const WorkerState = require('../core/WorkerState');//singleton
const utils = require('../core/utils'); const utils = require('../core/utils');
@@ -42,6 +44,8 @@ class WebSocketController {
switch (req.action) { switch (req.action) {
case 'test': case 'test':
this.test(req, ws); break; this.test(req, ws); break;
case 'get-config':
this.getConfig(req, ws); break;
case 'worker-get-state': case 'worker-get-state':
this.workerGetState(req, ws); break; this.workerGetState(req, ws); break;
case 'worker-get-state-finish': case 'worker-get-state-finish':
@@ -70,6 +74,14 @@ class WebSocketController {
this.send({message: 'Liberama project is awesome'}, req, ws); 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) { async workerGetState(req, ws) {
if (!req.workerId) if (!req.workerId)
throw new Error(`key 'workerId' is wrong`); throw new Error(`key 'workerId' is wrong`);