如何使用NodeJS继续更新网页?

时间:2017-04-02 16:52:54

标签: javascript node.js twitter

我是NodeJS的新手,我想知道如何让我的节点服务器不断更新网页。

所以我正在做的是我从twitter获取推文,现在我只想在基本网页上显示它们。在第一次运行期间,它看起来像这样:

  

姓名:ap。文字:RT @APCentralRegion:俄罗斯诗人Yevgeny Yevtushenko   专注于战争暴行的人在俄克拉荷马州死亡   姓名:ap。文字:一周之后   数百人参加了在俄罗斯举行的反政府抗议活动,警察被捕   数十次未经批准的集会。   ...

但是,在大约一分钟的时间间隔后,我收到以下错误消息:

response.write("*********End of One Interval*********")
                  ^
TypeError: Cannot read property 'write' of undefined

我的代码如下所示,请记住,当我在createServer中使用tweet函数时,它仍然显示无法正确更新页面的相同行为,但是,终端窗口始终使用console.log正确更新< / p>

// Dependencies =========================
var  
    twit = require('twit'),
    config = require('./config');

var http = require("http");
var url = require("url");

var Twitter = new twit(config);


// FAVORITE BOT====================
// Heavily modified from original tutorial. 

var favoriteTweet = function(response, a, b){  

        var params = {
        screen_name: a,
        count: b,
//      q: '#aprilfools, #aprilfoolsday',  // REQUIRED
//      result_type: 'recent', //recent tweets only.
      //lang: 'en'
    }

      //console.log("Params: " + params.q);
      // find the tweet
      Twitter.get('statuses/user_timeline', params, function(err,data){

        // find tweets
          //console.log(data);
        var tweet = data; //.statuses for actual tweets. 
        //console.log(tweet);


        for(var result in tweet) {
            response.write("Name: " + a + ". Text: " + tweet[result].text + "\n");
            console.log("Resulting text: " + tweet[result].text);
            console.log("Created At: " + tweet[result].created_at);
        }  

        //console.log(tweet);
          response.write("*********End of One Interval*********")
        console.log("*********End of One Interval*********")    
      });
    }

http.createServer(function(request, response) {

    response.writeHead(200, {"Content-Type":"text/plain"});
        var params = url.parse(request.url, true).query;

        var a = params.name;
        var b = parseInt(params.count);


        // grab & 'favorite' as soon as program is running...
        favoriteTweet(response, a, b);  

        // 'favorite' a tweet in every 1 minute
        setInterval(favoriteTweet, 60000);


}).listen(9090);

1 个答案:

答案 0 :(得分:1)

您必须将参数传递给回调。请执行下列操作:  的setInterval(函数(){       favoriteTweet(响应,A,B)  },60000);