Created
December 29, 2009 17:51
-
-
Save andregoncalves/265460 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var sys = require('sys'), | |
http = require('http'), | |
ws = require("./vendor/ws"), | |
base64 = require('./vendor/base64'), | |
arrays = require('./vendor/arrays'); | |
// Command line args | |
var USERNAME = process.ARGV[2]; | |
var PASSWORD = process.ARGV[3]; | |
var KEYWORD = process.ARGV[4] || "iphone"; | |
if (!USERNAME || !PASSWORD) | |
return sys.puts("Usage: node server.js <twitter_username> <twitter_password> <keyword>"); | |
// Authentication Headers for Twitter | |
var headers = []; | |
var auth = base64.encode(USERNAME + ':' + PASSWORD); | |
headers['Authorization'] = "Basic " + auth; | |
headers['Host'] = "stream.twitter.com"; | |
var clients = []; | |
// Connection to Twitter's streaming API | |
var twitter = http.createClient(80, "stream.twitter.com"); | |
var request = twitter.request("GET", "/1/statuses/filter.json?track=" + KEYWORD, headers); | |
request.finish(function (response) { | |
response.setBodyEncoding("utf8"); | |
response.addListener("body", function (chunk) { | |
// Send response to all connected clients | |
clients.each(function(c) { | |
c.send(chunk); | |
}); | |
}); | |
}); | |
// Websocket TCP server | |
ws.createServer(function (websocket) { | |
clients.push(websocket); | |
websocket.addListener("connect", function (resource) { | |
// emitted after handshake | |
sys.debug("connect: " + resource); | |
}).addListener("close", function () { | |
// emitted when server or client closes connection | |
clients.remove(websocket); | |
sys.debug("close"); | |
}); | |
}).listen(8080); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment