diff --git a/lib/modules/code_generator/code/reload-on-change.js b/lib/modules/code_generator/code/reload-on-change.js new file mode 100644 index 00000000..83161689 --- /dev/null +++ b/lib/modules/code_generator/code/reload-on-change.js @@ -0,0 +1,6 @@ +const ws = new WebSocket(`ws://${location.hostname}:${location.port}`); +ws.addEventListener('message', (evt) => { + if(evt.data === 'outputDone') { + location.reload(true); + } +}); diff --git a/lib/modules/code_generator/index.js b/lib/modules/code_generator/index.js index 6fe170d6..f359e48a 100644 --- a/lib/modules/code_generator/index.js +++ b/lib/modules/code_generator/index.js @@ -311,6 +311,7 @@ class CodeGenerator { code += self.generateCommunicationInitialization(true); code += self.generateStorageInitialization(true); code += self.generateNamesInitialization(true); + code += self.getReloadPageCode(); next(); }, @@ -324,6 +325,10 @@ class CodeGenerator { }); } + getReloadPageCode() { + return this.env === 'development' ? fs.readFileSync(require('path').join(__dirname,'/code/reload-on-change.js'), 'utf8') : ''; + } + getEmbarkJsProviderCode() { return this.plugins.getPluginsFor('embarkjsCode').reduce((code, plugin) => ( code += plugin.embarkjs_code.join('\n') diff --git a/lib/modules/webserver/server.js b/lib/modules/webserver/server.js index 3c98c54f..abbc71e8 100644 --- a/lib/modules/webserver/server.js +++ b/lib/modules/webserver/server.js @@ -4,6 +4,7 @@ const {canonicalHost, defaultHost, dockerHostSwap} = require('../../utils/host') const express = require('express'); const fs = require('../../core/fs'); require('http-shutdown').extend(); +const webSocket = require('ws'); class Server { constructor(options) { @@ -32,6 +33,15 @@ class Server { this.app.use(main); this.app.use('/coverage', coverage); this.app.use(coverageStyle); + + //this.wss = new webSocket.Server({server: this.server}); + //this.events.on('outputDone', () => { + // this.wss.clients.forEach((ws) => { + // if (ws.readyState === webSocket.OPEN) { + // ws.send('outputDone'); + // } + // }); + //}); const self = this; diff --git a/lib/modules/webserver/templates/embark-building-placeholder.html.ejs b/lib/modules/webserver/templates/embark-building-placeholder.html.ejs index b81d85b6..4785d8e4 100644 --- a/lib/modules/webserver/templates/embark-building-placeholder.html.ejs +++ b/lib/modules/webserver/templates/embark-building-placeholder.html.ejs @@ -25,4 +25,12 @@