File: http-tweet-streamer/index.js

Recommend this page to a friend!
  Classes of Igor Escobar   Terminal Crossword   http-tweet-streamer/index.js   Download  
File: http-tweet-streamer/index.js
Role: Example script
Content type: text/plain
Description: Example script
Class: Terminal Crossword
Generate a crosswords board on a text console
Author: By
Last change:
Date: 2 years ago
Size: 2,146 bytes
 

Contents

Class file image Download
var http = require("http"), sys = require("sys"), url = require("url"), path = require("path"), events = require("events"), fs = require("fs"), tweet_emitter = new events.EventEmitter(); function load_static_file(uri, response) { var filename = path.join(process.cwd(), uri); fs.exists(filename, function(exists) { if(!exists) { response.writeHead(404, {"Content-Type": "text/plain"}); response.write("404 Not Found\n"); response.end(); return; } fs.readFile(filename, "binary", function(err, file) { if(err) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(err + "\n"); response.end(); return; } response.writeHead(200); response.write(file, "binary"); response.end(); }); }); }; function get_tweets() { var twitter_search = url.parse("http://search.twitter.com/search.json?q=html&rpp=5&include_entities=true&result_type=mixed"); var request = http.request(twitter_search, function(res){ var body = ""; res.on("data", function(data){ console.log(data); body += data; }); res.on("end", function(){ var tweets = JSON.parse(body).results; if(tweets.length > 0) { tweet_emitter.emit("tweets", tweets); } }); }); request.end(); }; http.createServer(function(request, response) { var uri = url.parse(request.url).pathname; if(uri === "/stream") { var listener = tweet_emitter.on("tweets", function(tweets) { response.writeHead(200, { "Content-Type" : "text/plain" }); response.write(JSON.stringify(tweets)); response.end(); clearTimeout(timeout); }); var timeout = setTimeout(function() { response.writeHead(200, { "Content-Type" : "text/plain" }); response.write(JSON.stringify([])); response.end(); tweet_emitter.removeAllListeners("tweets"); }, 3000); } else { load_static_file(uri, response); } }).listen(8080); sys.puts("Server running at http://localhost:8080/"); setInterval(get_tweets, 2000);