Node 很新,我正在尝试在我的 node/express 应用程序中实现一个 twitter 流。
该文件位于我的路由文件夹中的一个单独的 stream.js 文件中,它是通过客户端 jquery 脚本中的 ajax 调用的。
我查看并比较了其他几个站点上的 http.request,并且尝试了多种配置,但没有任何变化。直到 http.request 回调的所有内容都会触发,但我无法得到响应
var http = require('http')
, events = require('events')
, url = require('url')
, fs = require('fs')
, path = require('path')
, sys = require('sys')
, tweet_emitter = new events.EventEmitter()
, options = {
host: "api.twitter.com",
port: 80,
path: "/1/statuses/public_timeline.json",
method: "GET"
}
var getTweets = function() {
console.log('getTweets');// fires fine
var req = http.request( options, function( res ) {
console.log('STATUS: ' + res.statusCode);// nothing here executes
console.log('HEADERS: ' + JSON.stringify(res.headers));
var data = "";
res.setEncoding('utf8');
res.on('data',function( chunk ) {
data += chunk;
console.log(chunk);
});
res.on('end',function() {
var tweets = JSON.parse( data );
if( tweets.length ) tweet_emitter.emit( 'tweets', tweets )
})
req.end()
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
})
}
setInterval(getTweets, 5000 );
exports.stream = function(req, res){
var listener = tweet_emitter.addListener("tweets", function( tweets ) {
res.writeHead(200, { "Content-Type" : "text/plain" });
res.write( JSON.stringify(tweets) );
res.end();
clearTimeout(timeout);
});
var timeout = setTimeout(function() {
res.writeHead( 200, { "Content-Type" : "text/plain" });
res.write(JSON.stringify([]));
res.end();
tweet_emitter.removeListener(listener);
},10000);
};