const express = require('express'); const robot = require('./robot') const {getRustConfig} = require('./config') const http = require("./utils/http"); const file = require('./utils/file') const {logger, fileLogger} = require("./utils/logger"); const {spawn, exec, fork, execSync} = require("child_process"); const path = require("path"); const {ka} = require("date-fns/locale"); const {getAppMap} = require("./robot"); /******* * web * **** */ function init() { const app = express(); const port = 3000; // 中间件示例,用于处理JSON请求体 app.use(express.json()); // GET请求的路由示例 app.get('/', (req, res) => { res.send('is OK!'); }); //简单三个接口,为了方便使用get请求 app.get('/isOK', isOK); app.get('/logs', (req, res) => { // 获取发送过来的信息(请求体的数据) const param = req.query; const n = param.n const id = param.id var app = robot.getApp(id) logger.info(JSON.stringify(getAppMap())) logger.info(JSON.stringify(app)) logger.info(`当前参数:${id}-${n}-??${app.port}`); let result = []; if (app.port !== -1) { var logPath = "./logs" + app.port logger.info(`日志相对地址:${logPath}`) file.getLastFile(logPath, 10, (fileNameList) => { // logger.info('??1:', fileNameList); result = file.readLastNLines(logPath, fileNameList, n); // logger.info('?????:', result); res.send({'code': 200, 'data': result, "message": "SUCCESS"}); }); } else { res.send({'code': 200, 'data': result, "message": "SUCCESS"}); } }); app.post('/execute', (req, res) => { // 获取发送过来的信息(请求体的数据) const param = req.body; (async (param) => { console.log('请求体:', param); var executeType = param.executeType if (executeType === "RUN") { await robot.run(param) } else if (executeType === "STOP") { await robot.closeApp(param) } else if (executeType === "RESTART") { await robot.restartApp(param) } })(param); // 回应信号(响应请求) res.send({'code': 200, 'data': "null", "message": "SUCCESS"}); }) // 使服务器监听特定端口 app.listen(port, () => { // console.log(`服务器正在监听 http://localhost:${port}`); }); logger.info('--web 启动'); } // node-已上线-上报 function robotNodeStatus() { var config = getRustConfig() http.request_post(`${config.baseUrl}/report/beOnline`, {}, {...config.headers}).then((data) => { // logger.info('??', data); logger.info('#####################汇报:node 在线-上报成功!', data); }).catch((error) => { logger.error(`node 在线!-上报失败: ${error.message}`); // 处理可能发生的错误 }); } function isOK(req, res) { res.send({'code': 200, 'data': "null", "message": "SUCCESS"}); } // 日志读取操作 module.exports = { init, robotNodeStatus };