Les données en continu avec Node.js

Je veux savoir si il est possible de transférer des données à partir du serveur vers le client avec Node.js. Je veux mettre une seule requête AJAX Node.js puis laisser la connexion ouverte et continu de flux de données pour le client. Le client recevra de ce flux et de mise à jour de la page en permanence.

Mise à jour:

Une mise à jour de cette réponse - je ne peux pas obtenir que cela fonctionne. Le response.write n'est pas envoyé avant d'appeler close. J'ai mis en place un exemple de programme que j'utilise pour réaliser ceci:

Node.js:

var sys = require('sys'), 
http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    var currentTime = new Date();
    setInterval(function(){
        res.write(
            currentTime.getHours()
            + ':' + 
            currentTime.getMinutes()
            + ':' +
            currentTime.getSeconds()
        );
    },1000);
}).listen(8000);

HTML:

<html>
    <head>
        <title>Testnode</title>
    </head>

    <body>
        <!-- This fields needs to be updated -->
        Server time: <span id="time">&nbsp;</span>

        <!-- import jQuery from google -->
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

        <!-- import jQuery -->
        <script type="text/javascript">
            $(document).ready(function(){
            //I call here node.localhost nginx ports this to port 8000
                $('#time').load('http://node.localhost');
            });
        </script>
    </body>
</html>

À l'aide de cette méthode, je n'obtenez pas quelque chose de nouveau, jusqu'à ce que j'appelle close(). Est-ce possible ou dois-je aller avec un long sondage approche à la place où j'appelle la fonction de charge de nouveau comme l'un vient vous?

  • Aussi je ne pense pas que ce soit le streaming, c'est juste de la segmentation des trucs en bits. Oui, noeud envoie des éléments de réponse, mais chaque serveur html ne ce. Le streaming de la bonté que vous obtenez de nœud se réfère à quelque chose d'autre.
  • Aussi, dans votre exemple, vous n'avez pas le mettre en pause, reprendre, rincer méthodes. Le (lire) flux est quelque chose qui est en vous donnant des données, aussi vite qu'il le peut (ou aussi vite que vous le pouvez). Et vous lui dites de faire une pause, puis il s'arrête. Et de vous dire de continuer etc.
InformationsquelleAutor Saif Bechan | 2010-04-01