Skip to content

Instantly share code, notes, and snippets.

@mostlyfine
Created May 6, 2015 13:46
Show Gist options
  • Select an option

  • Save mostlyfine/a6976905e35865b2fd24 to your computer and use it in GitHub Desktop.

Select an option

Save mostlyfine/a6976905e35865b2fd24 to your computer and use it in GitHub Desktop.
path = require 'path'
app = require('express')()
server = require('http').createServer(app).listen(process.env.PORT || 3000)
io = require('socket.io').listen(server)
app.set('view engine', 'ejs')
app.set('views', path.join(__dirname, 'views'))
twitter = require 'twitter'
twit = new twitter({
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET,
})
keyword = '#2ch'
app.get '/', (req, res) ->
if req.query.keyword
keyword = req.query.keyword
twit.stream 'statuses/filter', {track: keyword}, (stream) ->
console.log "stream start: #{keyword}"
stream.on 'data', (data) -> io.sockets.emit 'message', data
stream.on 'end', (res) -> console.log 'disconnected'
stream.on 'error', (error) -> console.log error
res.render 'index', {keyword: keyword}
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
<link href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css' rel='stylesheet'>
<link href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css' rel='stylesheet'>
<title>Node.js + Twitter Streaming API + socket.io</title>
</head>
<body>
<form action="/" method="get">
<input type="text" name="keyword" value="<%= keyword %>">
</form>
<div id="tweets">
</div>
<script src="/socket.io/socket.io.js"></script>
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script type="text/javascript">
$(function(){
var socket = io.connect();
socket.on('connect', function(){
console.log('connected!');
});
socket.on('message', function(t){
$('<div></div>')
.html('<li>' + t.text + '</li>')
.prependTo('#tweets');
});
socket.on('disconnect', function() {
console.log("disconnect");
});
socket.on('destroy', function() {
console.log("destroy");
});
socket.on('error', function() {
console.log("error");
});
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment