server-worker-thread.js 888 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. const { initServerProcess } = require('./server-process.js');
  2. let closeTmr = null;
  3. const sendHandle = (err) => {
  4. if (err && err.code === 'ERR_IPC_CHANNEL_CLOSED') {
  5. process.exit(0);
  6. }
  7. };
  8. const receiveMessageFromMain = initServerProcess((msg) => {
  9. // send message from worker going to main
  10. process.send(msg, sendHandle);
  11. if (msg.serverClosed) {
  12. clearTimeout(closeTmr);
  13. process.exit(0);
  14. }
  15. });
  16. process.on('message', (msg) => {
  17. // receive a message from the main going to worker
  18. if (msg && msg.closeServer) {
  19. closeTmr = setTimeout(() => {
  20. // force exiting if we timeout
  21. process.exit(0);
  22. }, 5000);
  23. }
  24. receiveMessageFromMain(msg);
  25. });
  26. process.on('unhandledRejection', (e) => {
  27. process.send(
  28. {
  29. error: { message: 'unhandledRejection: ' + e, stack: typeof e.stack === 'string' ? e.stack : null },
  30. },
  31. sendHandle
  32. );
  33. });