Kann ich mehrere Antworten über node.js an den Client senden?
-
22-10-2019 - |
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?
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