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 => {