Question

Une fonction simple qui sert une chaîne JSON à partir d'un résultat de la base de données est retransmis au client, en utilisant socket.broadcast (). Ce que je veux faire jour du côté client lorsque la valeur change. À l'heure actuelle, la fonction de diffusion utilise setTimeout pour diffuser tous les continously 1 seconde. En regardant les journaux de demande à Firebug, il y a une réponse continue GET, que je ne pense pas est une bonne chose ...

Il suffit de se demander quelle est la meilleure pratique pour l'utilisation de prises? Est-ce ces demandes vont tuer quelque chose? Est-ce qu'une solution soit comparer horodatages, ou quelque chose de similaire à cesser d'envoyer inutilement des demandes?

//server-side
function checkData() {
    client.query('SELECT * FROM data', function selectCb(err, data) {
        socket.broadcast(processData(data));
        setTimeout(checkData, 1000);
    });
}

//client-side
socket.on('message', function(data) {
    $('#container').html(JSON.stringify(JSON.parse(data), null));
});

//sample data
[{
    "type":"Statistic1",
    "value":65.2,
    "timestamp":"2011-04-29T16:22:39.000Z"
},{
    "type":"Statistic2",
    "value":18.6,
    "timestamp":"2011-04-29T16:22:39.000Z"
}]

Merci pour votre aide!

Était-ce utile?

La solution

Cela dépend des données que vous envoyez. L'un des avantages des prises est que vous pouvez choisir quand pour envoyer des données aux clients. Enregistrer certaines des requêtes GET et les données diffusées uniquement lorsque vous avez quelque chose de nouveau à envoyer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top