Bonsoir,

Alors voilà, je lis un fichier JSON se situant sur mon serveur domotique afin de récuperer la valeur de la météo et de l'intégrer à mon interface web mais dès que la température est modifiée dans le fichier JSON celle-ci ne s'actualise pas sur mon interface sauf si je le fais manuellement...

voici mon code côté serveur :

/* SOCKET IO */
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
/*SOCKET IO */

//LECTURE meteo DEPUIS domoticz
const options = {
    url: 'http://192.168.1.6:8080/json.htm?type=devices&rid=4'
};
request(options, function(err, res, body) {
    let json = JSON.parse(body);

    meteo =  json.result[0].Temp;
    socket.emit('data', meteo + "°C");
});

//FIN SOCKET
});

De plus j'aimerais rendre cette variable "meteo" disponible dans le reste de mon fichier app.js afin de créer un système qui m'envoi un SMS chaque matin par le biai de l'option free ...

Merci d'avance pour vos pistes et conseils !

5 réponses


Defy
Réponse acceptée

un socket c'est un canal de communication client server comme http ou udp ou autres. si ton socket est appeler avec de l'ajax, oui seul la valeur seras mise a jour sinon toute la page aussi c'est possible

un socket c'est du temps reel oui mais c'est pas pour ca qu'il ne faut pas demander la ressource. avec un setInterval tu peut venir interoger ton socket toute les x minutes pour mettre a jour ton interfaces. Le socket c'est pas du push, il vas pas te notifier des qu'il y a un changement c'est a toi de demander si il y a eu un changement a ton server

FDRX65
Auteur

A quoi sert donc les socket exactement alors ? Je n'ai pas du comprendre ... Cela est la manière la plus propre ? Et sa actualise uniquement la valeur et non la page entière ?

FDRX65
Auteur

Merci beaucoup pour tes infos supplementaire, j´ai mis un setInterval côter serveur sur ma request et cela fonctionne parfaitement sans rechargement de la page

De rien on est la pour aider :-)

Tien j'ai trouvé un article ce matin sur la gestion des événements socket et des info push depuis le server, du coup bonne lecture.

ps: c'est en anglais.