web.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. const express = require('express');
  2. const robot = require('./robot')
  3. const {getRustConfig} = require('./config')
  4. const http = require("./utils/http");
  5. const file = require('./utils/file')
  6. const {logger, fileLogger} = require("./utils/logger");
  7. const {spawn, exec, fork, execSync} = require("child_process");
  8. const path = require("path");
  9. const {ka} = require("date-fns/locale");
  10. const {getAppMap} = require("./robot");
  11. /*******
  12. * web
  13. * **** */
  14. function init() {
  15. const app = express();
  16. const port = 3000;
  17. // 中间件示例,用于处理JSON请求体
  18. app.use(express.json());
  19. // GET请求的路由示例
  20. app.get('/', (req, res) => {
  21. res.send('is OK!');
  22. });
  23. //简单三个接口,为了方便使用get请求
  24. app.get('/isOK', isOK);
  25. app.get('/logs', (req, res) => {
  26. // 获取发送过来的信息(请求体的数据)
  27. const param = req.query;
  28. const n = param.n
  29. const id = param.id
  30. robot.appMap.forEach((value, key) => {
  31. logger.info(JSON.stringify(value))
  32. })
  33. var app = robot.getApp(id)
  34. // logger.info(JSON.stringify(getAppMap()))
  35. // logger.info(JSON.stringify(app))
  36. logger.info(`当前参数:${id}-${n}-??${app.port}`);
  37. let result = [];
  38. if (app.port !== -1) {
  39. var logPath = "./logs" + app.port
  40. logger.info(`日志相对地址:${logPath}`)
  41. file.getLastFile(logPath, 10, (fileNameList) => {
  42. // logger.info('??1:', fileNameList);
  43. result = file.readLastNLines(logPath, fileNameList, n);
  44. // logger.info('?????:', result);
  45. res.send({'code': 200, 'data': result, "message": "SUCCESS"});
  46. });
  47. } else {
  48. res.send({'code': 200, 'data': result, "message": "SUCCESS"});
  49. }
  50. });
  51. app.post('/execute', (req, res) => {
  52. // 获取发送过来的信息(请求体的数据)
  53. const param = req.body;
  54. (async (param) => {
  55. console.log('请求体:', param);
  56. var executeType = param.executeType
  57. if (executeType === "RUN") {
  58. await robot.run(param)
  59. } else if (executeType === "STOP") {
  60. await robot.closeApp(param)
  61. } else if (executeType === "RESTART") {
  62. await robot.restartApp(param)
  63. }
  64. })(param);
  65. // 回应信号(响应请求)
  66. res.send({'code': 200, 'data': "null", "message": "SUCCESS"});
  67. })
  68. // 使服务器监听特定端口
  69. app.listen(port, () => {
  70. // console.log(`服务器正在监听 http://localhost:${port}`);
  71. });
  72. logger.info('--web 启动');
  73. }
  74. // node-已上线-上报
  75. function robotNodeStatus() {
  76. var config = getRustConfig()
  77. http.request_post(`${config.baseUrl}/report/beOnline`, {}, {...config.headers}).then((data) => {
  78. // logger.info('??', data);
  79. logger.info('#####################汇报:node 在线-上报成功!', data);
  80. }).catch((error) => {
  81. logger.error(`node 在线!-上报失败: ${error.message}`); // 处理可能发生的错误
  82. });
  83. }
  84. function isOK(req, res) {
  85. res.send({'code': 200, 'data': "null", "message": "SUCCESS"});
  86. }
  87. // 日志读取操作
  88. module.exports = {
  89. init,
  90. robotNodeStatus
  91. };