htmgo/framework/assets/js/htmxextensions/livereload.ts

45 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-09-17 17:13:22 +00:00
import htmx from "htmx.org";
2024-11-09 18:32:30 +00:00
import {hasExtension} from "./extension";
2024-09-17 17:13:22 +00:00
let lastVersion = "";
htmx.defineExtension("livereload", {
init: function () {
2024-09-21 03:59:07 +00:00
2024-11-09 18:32:30 +00:00
let enabled = hasExtension("livereload")
2024-09-21 03:59:07 +00:00
if(!enabled) {
return
}
2024-11-09 18:32:30 +00:00
console.info('livereload extension initialized.');
// Create a new EventSource object and point it to your SSE endpoint
const eventSource = new EventSource('/dev/livereload');
// Listen for messages from the server
eventSource.onmessage = function(event) {
const message = event.data
// Log the message data received from the server
if(lastVersion === "") {
lastVersion = message;
}
if(lastVersion !== message) {
lastVersion = message;
reload()
}
};
// Handle errors (e.g., when the connection is closed)
eventSource.onerror = function(error) {
console.error('EventSource error:', error);
};
2024-09-17 17:13:22 +00:00
},
// @ts-ignore
onEvent: function (name, evt) {
},
2024-09-17 18:35:44 +00:00
});
function reload() {
window.location.reload()
2024-10-04 16:15:57 +00:00
}