node-cron
モジュールを使用して2秒ごとにHTTPリクエストを作成しようとしています。ノード、http-requestのノード-cronでエラーが発生しました
私は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);
});
}
}
これはうまくいきます。私はこれを2秒ごとに呼びたいと思っていますし、後でビューファイルを更新したいと思います。ここで私はsocket.io
が必要かどうかわからない、あるいは私はそれを反応で行うことができる。
私はindex.jsでこの関数を呼び出しています。
var express = require('express');
var router = express.Router();
var cron = require('node-cron');
var apiCalls = require('../apiCalls')
router.get('/', function(req, res, next) {
var cronJob = cron.schedule('*/2 * * * * *', function(){
apiCalls.getData(function(data){
res.render('index', { title: 'example', data: data });
});
});
cronJob.start();
});
module.exports = router;
私はすでにヘッダーを設定しているようですが、私はエラーが発生しています。どうやってやるの?あなただけONE最終res.renderを持つことができます()要求ハンドラあたり -
_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)
はあなたに
私は現在socket.ioを使用していますが、http要求後にビューを更新できませんでした。私が 'io.connect..'と内部のcronジョブを使うとき。ユーザーが接続するたびに、複数のHTTP要求が送信されます。 –
あなたのサーバー/クライアントでsocket.ioをどのように使用しているのか分からず、私は何が問題なのかよくわかりません。また、あなたのcronジョブの内部でio.connectを使用すると、すでに問題が発生していると思います。 –