reloadServer.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const SSEStream = require('ssestream').default;
  2. function ReloadServer(app, compiler) {
  3. app.get('/reload', (req, res, next) => {
  4. const sseStream = new SSEStream(req);
  5. sseStream.pipe(res);
  6. let closed = false;
  7. const reloadPlugin = () => {
  8. if (!closed) {
  9. sseStream.write(
  10. {
  11. event: 'compiled successfully',
  12. data: {
  13. action: '刷新插件和当前页面'
  14. }
  15. },
  16. 'utf-8',
  17. (err) => {
  18. if (err) {
  19. console.error(err);
  20. }
  21. },
  22. );
  23. setTimeout(() => {
  24. sseStream.unpipe(res);
  25. }, 100);
  26. }
  27. };
  28. compiler.hooks.done.tap(
  29. 'chrome reload plugin',
  30. reloadPlugin
  31. );
  32. res.on('close', () => {
  33. closed = true;
  34. sseStream.unpipe(res);
  35. });
  36. next();
  37. });
  38. }
  39. module.exports = ReloadServer;