J'essaie de créer une solution côté serveur qui pousse périodiquement les données vers le client (pas d'interrogation côté client) via node.js. La connexion doit être ouverte de façon permanente et chaque fois que le serveur a de nouvelles données, il les transmet au client.node.js - envoie les données au client - un seul client peut être connecté?
Voici mon script simple exemple:
var sys = require('sys'),
http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
sys.puts('Start sending...');
setInterval(function(){
res.write("<script type='text/javascript'>document.write('test<br>')</script>");
}, 10000);
}).listen(8010);
Cela fonctionne essentiellement, mais il semble que seul client à la fois peut être connecté.
Si j'ouvre http://127.0.0.1:8010/
avec mon navigateur, je vois toutes les 10 secondes la nouvelle sortie écrite. Mais quand j'ouvre un autre onglet avec la même URL, il ne fait que charger pour toujours. Seulement si je ferme le premier onglet, je reçois un conent du serveur.
Que dois-je faire pour server plusieurs clients?
C'est bizarre. Selon cette page, cela devrait fonctionner: http://blog.nemikor.com/2010/05/21/long-polling-in-nodejs/ – thejh
@thejh Hm, même si j'essaie de retourner une réponse simple avec res. end() (pas de comète, simple requête-réponse) il me semble que les clients doivent attendre le précédent pour récupérer le contenu du serveur. Peut-être que c'est un problème de système d'exploitation? Je cours node.js 0.3.2 sur un ubuntu vm-ware. – Max
@Max: Etes-vous sûr de la version? Même github dit que 0.3.1 est le plus récent ... https://github.com/ry/node – thejh