2
첫 번째 노드 js 앱을 만들고 싶습니다. 이를 위해 공개 트위터 짹짹과 출력 트윗을 요청 응답으로 가져와야합니다. 많이 찾았지만 이전 노드 버전 코드 (예 : createServer, addListener 같은 코드)로 작성된 코드가 있습니다. 트위터 호출을 요청하고 노드 버전 0.6.18에서 json을 응답으로 출력하는 코드는 어떻게 작성합니까?트위터 출력 방법 노드 js 버전 0.6.18을 사용하여 respose
다음은 내가
var http = require("http");
var events = require("events");
var port = 8001;
var twitterClient = http.createClient(80, 'api.twitter.com');
var tweetEmitter = new events.EventEmitter();
var request = twitterClient.request("GET", "/1/statuses/public_timeline.json", {"host": "api.twitter.com"});
function getTweats() {
request.addListener("response", function (response) {
var body = "";
response.addListener("data", function (data) {
body += data;
});
response.addListener("end", function (end) {
var tweets = JSON.parse(body);
if (tweets.length > 0) {
tweetEmitter.emit("tweets", tweets);
console.log(tweets, 'tweets loaded');
}
});
});
request.end();
}
setInterval(getTweats(), 1000);
http.createServer(function (request, response) {
var uri = url.parse(request.url).pathname;
console.log(uri);
if (uri === '/stream') {
var cb = function (tweets) {
console.log('tweet'); // never happens!
response.writeHead(200, {"Content-Type": "text/plain"});
response.write(JSON.stringify(tweets));
response.end();
clearTimeout(timeout);
};
tweetEmitter.addListener("tweets", cb);
// timeout to kill requests that take longer than 10 secs
var timeout = setTimeout(function() {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write(JSON.stringify([]));
response.end();
tweetEmitter.removeListener("tweets", cb);
}, 10000);
} else {
loadStaticFile(uri, response);
}
}).listen(port);
console.log("Server running at http://localhost:" + port + "/");
을 시도하고 오류가 일반적인 하나입니다 오류
$ node tweet.js
Server running at http://localhost:8001/
timers.js:223
callback.apply(timer, args);
^
TypeError: Cannot call method 'apply' of undefined
at Timer.ontimeout (timers.js:223:14)
** 무엇을 시도 했습니까? ** - 관련 코드를 찾았지만 작동하지 않았다고 암시했습니다. 그걸 제공 할 수 있니? 그리고 무엇이 실패 했는가? – Deestan
이전 코드를 추가했습니다. 감사를 확인하십시오. – merahulpk
타이머를 setInterval (getTweats(), 5000)으로 수정했습니다. 트윗의 첫 번째 세트는 콘솔에 출력됩니다. 그 후에 내가 언급 한 것과 같은 오류가 발생합니다. 따라서 기본적으로 짹짹을 가져 오는 코드가있는 것보다는 타이밍/콜백 문제로 보입니다. – almypal