Skip to content

Instantly share code, notes, and snippets.

@sferik
Created May 24, 2013 23:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sferik/5647244 to your computer and use it in GitHub Desktop.
Save sferik/5647244 to your computer and use it in GitHub Desktop.
var server = require('http').createServer(serveFile);
var fs = require('fs');
var ntwitter = require("ntwitter");
var io = require('socket.io').listen(server);
function serveFile(request, response){
fs.readFile(__dirname + '/index.html', function(error, data){
if(error) {
response.writeHead(404, {'Content-Type': 'text/html'});
response.write("<html><body>No drank for you!</body></html>");
} else {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(data);
}
response.end();
});
}
var client = new ntwitter({
consumer_key: process.env["TWITTER_CONSUMER_KEY"],
consumer_secret: process.env["TWITTER_CONSUMER_SECRET"],
access_token_key: process.env["TWITTER_ACCESS_TOKEN"],
access_token_secret: process.env["TWITTER_ACCESS_SECRET"]
});
var coffee, tea, wine, beer, water;
coffee = tea = wine = beer = water = 0;
var items = ["coffee", "tea", "wine", "beer", "water"];
io.sockets.on('connection', function(socketIoSocket){
socketIoSocket.on("error", function(error) {
console.log(error);
});
client.stream("statuses/filter", {"track": items.join(',')}, function(twitterSocket){
twitterSocket.on("error", function(error){
console.log(error);
});
twitterSocket.on("data", function(tweet){
if(tweet.text.match(/coffee/i)) {
coffee += 1;
socketIoSocket.emit('coffee', {"count": coffee});
}
if(tweet.text.match(/tea/i)) {
tea += 1;
socketIoSocket.emit('tea', {"count": tea});
}
if(tweet.text.match(/wine/i)) {
wine += 1;
socketIoSocket.emit('wine', {"count": wine});
}
if(tweet.text.match(/beer/i)) {
beer += 1;
socketIoSocket.emit('beer', {"count": beer});
}
if(tweet.text.match(/water/i)) {
water += 1;
socketIoSocket.emit('water', {"count": water});
}
});
});
});
server.listen(1234);
<!doctype>
<html>
<head>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('coffee', function(data){
document.getElementById('coffee').innerHTML = data.count;
});
socket.on('tea', function(data){
document.getElementById('tea').innerHTML = data.count;
});
socket.on('wine', function(data){
document.getElementById('wine').innerHTML = data.count;
});
socket.on('beer', function(data){
document.getElementById('beer').innerHTML = data.count;
});
socket.on('water', function(data){
document.getElementById('water').innerHTML = data.count;
});
</script>
</head>
<body>
<h1>Welcome to Drankstream!</h1>
<dl>
<dt>Coffee</dt>
<dd id="coffee">0</dd>
<dt>Tea</dt>
<dd id="tea">0</dd>
<dt>Wine</dt>
<dd id="wine">0</dd>
<dt>Beer</dt>
<dd id="beer">0</dd>
<dt>Water</dt>
<dd id="water">0</dd>
</dl>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment