bonsoir,
j'ai un serveur web sur un microcontrôleur qui établit un websocket avec le navigateur. Ça marche en wifi, tout est à peu près ok... pas de pb.
j'aimerai que côté client je puisse afficher un message d'erreur quand le serveur n'est plus accessible (extinction, éloignement, je ne sais quoi)
Normalement le serveur envoie un message toutes les secondes donc je pensais afficher une erreur sur l'interface web s'il n'y a pas eu de message WS depuis plus de 2 s. C'est le but de testPresence() du script ci-dessous
Mais ça ne donne rien : Le JS semble ne jamais passer par la fonction testPresence après l'établissement du WS.
J'ai essayer de simplifier au max pour cerner le pb mais je ne trouve pas (OK je suis une brêle en JS et je ne comprends pas forcement tout ce que j'ai fait - récupéré en parti dans des exemples sur le web)
Deux questions :
1. pourquoi est ce que testPresence n'est jamais executé hormis tout au début après le chargement de page ?
2. il existe peut-être une solution plus simple, prévue pour que je ne connais pas
merci de votre aide
j'ai un serveur web sur un microcontrôleur qui établit un websocket avec le navigateur. Ça marche en wifi, tout est à peu près ok... pas de pb.
j'aimerai que côté client je puisse afficher un message d'erreur quand le serveur n'est plus accessible (extinction, éloignement, je ne sais quoi)
Normalement le serveur envoie un message toutes les secondes donc je pensais afficher une erreur sur l'interface web s'il n'y a pas eu de message WS depuis plus de 2 s. C'est le but de testPresence() du script ci-dessous
Mais ça ne donne rien : Le JS semble ne jamais passer par la fonction testPresence après l'établissement du WS.
J'ai essayer de simplifier au max pour cerner le pb mais je ne trouve pas (OK je suis une brêle en JS et je ne comprends pas forcement tout ce que j'ai fait - récupéré en parti dans des exemples sur le web)
Deux questions :
1. pourquoi est ce que testPresence n'est jamais executé hormis tout au début après le chargement de page ?
2. il existe peut-être une solution plus simple, prévue pour que je ne connais pas
merci de votre aide
var gateway = `ws://${window.location.hostname}/ws`;
var websocket;
var debut = Date.now();
var dernier = Date.now();
// démarre le WS au chargement de la page
window.addEventListener('load', onload);
function onload(event) {
initWebSocket();
}
function initWebSocket() {
console.log('Connexion WebSocket');
websocket = new WebSocket(gateway);
websocket.onopen = onOpen;
websocket.onclose = onClose;
websocket.onmessage = onMessage;
}
// verification de la connexion à l'ESP
const itvl = setInterval(testPresence(), 2000);
function testPresence() {
console.log(dernier);
// TEST ICI MAIS ÇA NE PASSE JAMAIS ICI !
}
function onMessage(event) {
dernier = Date.now();
console.log(event.data);
// le traitement du message pour afficher des trucs ...
// je coupe c'est un peu long pas forcement pertinent ici
}
// ouverture fermeture
function onOpen(event) {
console.log('Connexion établie');
}
function onClose(event) {
console.log('Connexion fermée');
setTimeout(initWebSocket, 2000);
}