Ich versuche, eine HTTP-Anfrage alle 2 Sekunden mit dem node-cron
Modul zu machen.Knoten, Fehler mit Node-Cron mit http Anfrage
Ich habe apiCalls.js;
var http = require('https');
module.exports = {
getData: function(callback) {
var options = {
host: 'google.com',
path: '/index.html'
};
var req = http.get(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
var bodyChunks = [];
res.on('data', function(chunk) {
bodyChunks.push(chunk);
}).on('end', function() {
var body = Buffer.concat(bodyChunks);
console.log('BODY: ' + body);
callback(body);
})
});
req.on('error', function(e) {
console.log('ERROR: ' + e.message);
});
}
}
Das funktioniert gut. Ich möchte dies alle 2 Sekunden aufrufen und später möchte ich die Ansichtsdatei aktualisieren. Hier weiß ich nicht ob ich socket.io
brauche oder ich kann es mit reagieren.
Ich rufe diese Funktion in index.js;
Aber ich bekomme Fehler, wie es scheint, habe ich bereits die Header gesetzt. Wie kann ich das machen?
_http_outgoing.js:503
throw new errors.Error('ERR_HTTP_HEADERS_SENT', 'set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at validateHeader (_http_outgoing.js:503:11)
Danke
Ich benutze jetzt socket.io, aber ich konnte die Ansicht nach der HTTP-Anfrage nicht aktualisieren. Wenn ich 'io.connect..' und den Cron-Job verwende. Immer wenn ein Benutzer eine Verbindung herstellt, werden mehrere HTTP-Anfragen gesendet. –
Ohne zu sehen, wie Sie socket.io in Ihrem Server/Client verwenden, bin ich mir nicht sicher, was das Problem ist. Auch die Verwendung von io.connect in Ihrem Cron-Job riecht schon nach Problemen, denke ich. –