Frage

Ich benutze Node.js Und ich möchte mehrere Antworten an den Client zurücksenden. Daher sendet der Client eine AJAX -Postanforderung und erhält einige Daten zurück. Der Server muss jedoch weiterhin eine Verarbeitung durchführen und wenn dies erledigt ist, möchte ich, dass er mehr Daten zurücksendet.

Ich weiß, dass dies ein guter Kandidat ist Socket.io, aber ich habe kein Beispiel dafür gesehen, wie man benutzt socket.io im Kontext eines MVC -Frameworks. Geht es in den Controller?

War es hilfreich?

Lösung

Sie können serversendete Ereignisse verwenden. Hier ist ein Beispiel:

https://github.com/chovy/nodejs-stream (Beispiel für den vollständigen Quellcode)

UI

var source = new EventSource('stream');

source.addEventListener('a_server_sent_event', function(e) {
   var data = JSON.parse(e.data);
   //do something with data
});

Knoten

if ( uri == '/stream' ) {
  //setup http server response handling and get some data from another service
  http.get(options, function(resp){
    resp.on('data', function(chunk){
      res.write("event: a_server_sent_event\n");
      res.write("data: "+chunk.toString()+"\n\n");
    });
  });
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top