Files
photobooth/frontend/js/websocket.js

47 lines
992 B
JavaScript

/* Communication WebSocket avec le backend */
let ws = null;
let wsReconnectTimer = null;
const wsCallbacks = {};
function wsConnecter() {
const proto = location.protocol === 'https:' ? 'wss:' : 'ws:';
ws = new WebSocket(`${proto}//${location.host}/ws`);
ws.onopen = () => {
console.log('WebSocket connecte');
if (wsReconnectTimer) {
clearInterval(wsReconnectTimer);
wsReconnectTimer = null;
}
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
const cb = wsCallbacks[msg.type];
if (cb) cb(msg);
};
ws.onclose = () => {
console.log('WebSocket deconnecte, rechargement dans 5s...');
setTimeout(() => { location.reload(); }, 5000);
};
ws.onerror = () => {
ws.close();
};
}
function wsEnvoyer(msg) {
if (ws && ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify(msg));
}
}
function wsOnMessage(type, callback) {
wsCallbacks[type] = callback;
}
// Connexion au demarrage
wsConnecter();