index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. const getPort = require('get-port');
  2. const server = require("./server");
  3. const electronApp = require('electron').app;
  4. /**
  5. * java server插件
  6. * @class
  7. */
  8. class JavaServerAddon {
  9. constructor(app) {
  10. this.app = app;
  11. this.cfg = app.config.addons.javaServer;
  12. this.javaServer = null;
  13. }
  14. /**
  15. * 创建java服务
  16. *
  17. * @function
  18. * @since 1.0.0
  19. */
  20. async createServer () {
  21. await this.createJavaPorts();
  22. this.javaServer = new server(this.app);
  23. await this.javaServer.create();
  24. // kill
  25. electronApp.on("before-quit", async () => {
  26. this.app.logger.info("[addon:javaServer] before-quit: kill-----------");
  27. await this.javaServer.kill();
  28. });
  29. return;
  30. }
  31. /**
  32. * todo 检查服务是否启动
  33. *
  34. * @function
  35. * @since 1.0.0
  36. */
  37. async check () {
  38. }
  39. /**
  40. * 创建服务端口
  41. *
  42. * @function
  43. * @since 1.0.0
  44. */
  45. async createJavaPorts() {
  46. if (!this.cfg.enable) {
  47. return;
  48. }
  49. const javaPort = await getPort({ port: this.cfg.port });
  50. process.env.EE_JAVA_PORT = javaPort;
  51. this.cfg.port = javaPort;
  52. // 更新config配置
  53. this.app.getCoreDB().setItem("config", this.app.config);
  54. }
  55. /**
  56. * 杀掉进程
  57. *
  58. * @function
  59. * @since 1.0.0
  60. */
  61. async kill() {
  62. if (!this.cfg.enable) {
  63. return;
  64. }
  65. await this.javaServer.kill();
  66. }
  67. }
  68. JavaServerAddon.toString = () => '[class JavaServerAddon]';
  69. module.exports = JavaServerAddon;