auto refresh

This commit is contained in:
N0\A
2025-10-30 08:23:46 +01:00
parent d97a13b623
commit b58dd7bc28
3 changed files with 65 additions and 0 deletions

View File

@@ -53,5 +53,6 @@
</li>
</ul>
</div>
<script src="/refresh.js"></script>
</body>
</html>

View File

@@ -72,5 +72,6 @@
</ul>
<p>If you want an account on any of these, want to suggest something new or get a subdomain, just message me</p>
</div>
<script src="/refresh.js"></script>
</body>
</html>

63
refresh.js Normal file
View File

@@ -0,0 +1,63 @@
(function() {
// Configuration
const SSE_PORT = 8765;
const RECONNECT_DELAY = 5000; // 5 seconds
let eventSource = null;
let reconnectTimer = null;
function connect() {
// Clear any existing reconnect timer
if (reconnectTimer) {
clearTimeout(reconnectTimer);
reconnectTimer = null;
}
// Close existing connection
if (eventSource) {
eventSource.close();
}
// Connect to SSE server
const url = `${window.location.protocol}//${window.location.hostname}:${SSE_PORT}/events`;
eventSource = new EventSource(url);
eventSource.onmessage = function(event) {
try {
const data = JSON.parse(event.data);
if (data.type === 'reload') {
console.log('Repository updated, reloading page...');
// Hard reload to bypass cache
window.location.reload(true);
}
} catch (e) {
console.error('Error parsing SSE message:', e);
}
};
eventSource.onerror = function(error) {
console.log('SSE connection error, will reconnect...');
eventSource.close();
// Attempt to reconnect after delay
reconnectTimer = setTimeout(connect, RECONNECT_DELAY);
};
eventSource.onopen = function() {
console.log('Connected to auto-refresh service');
};
}
// Start connection when page loads
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', connect);
} else {
connect();
}
// Cleanup on page unload
window.addEventListener('beforeunload', function() {
if (eventSource) {
eventSource.close();
}
});
})();