diff --git a/src/index.ts b/src/index.ts index ce21da9..1305483 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,12 +9,18 @@ hexo.extend.injector.register('body_end', () => { const config = getOrDefault(hexo); // TODO: error handling (Websocket connection failed. etc...) & retry. // TODO: host should be configurable? - return ''; + const s = ` + const socket = new WebSocket("ws://localhost:${config.server.port}"); + const path = window.location.pathname.split("?")[0]; + + const reloadingMessage = '{"type":"reload", "message": "The browser is reloading. Please wait for the reload. This take a little longer if there are a lot of routes (post, page, assets, tags, categories etc)."}'; + const connectedMessage = JSON.stringify({"type":"connected", "message": "Connection established from " + path}); + + const sendReloadingMessage = () => { socket.send(reloadingMessage) }; + socket.addEventListener("open", (event) => {socket.send(connectedMessage)}); + socket.addEventListener("message", (event) => {if (event.data === "${config.notification.message}") { sendReloadingMessage(); socket.close(); location.reload();}}); + `; + + return ``; } }); diff --git a/src/webSocket.ts b/src/webSocket.ts index 4d354b0..9858de2 100644 --- a/src/webSocket.ts +++ b/src/webSocket.ts @@ -14,7 +14,7 @@ export const createWebSocketServer = (config: Config) => { port: config.server.port }); - log.info(`${p} plugin config is: \n ${JSON.stringify(config, null, 2)}`); + log.debug(`${p} plugin config is: \n ${JSON.stringify(config, null, 2)}`); wss.on('error', err => { log.error(`${p} ${err}`); @@ -24,11 +24,22 @@ export const createWebSocketServer = (config: Config) => { log.debug(`${p} Connection established.`); ws.on('message', data => { - log.info(`${p} ${data}`); + const d = JSON.parse(data); + + switch (d.type) { + case 'connected': + log.debug(`${p} ${d.message}`); + break; + case 'reload': + log.info(`${p} ${d.message}`); + break; + default: + // Nothing todo + } }); ws.on('close', () => { - log.info(`${p} Connection closed`); + log.debug(`${p} Connection closed`); }); ws.on('error', err => {