socket.ioでtwitterのstreaming API
初socket.io。streaming API試すのはありがちだけどググってもsocket.ioのバージョン古い版しかなくてよくわからんかった。
とりあえずこんな感じで動いた。socket.ioのバージョンは0.8.4。
// server var io = require('socket.io').listen(8000) , confy = require('confy') , TwitterNode = require('twitter-node').TwitterNode; confy.get('twitter', { require: { username: '', password: '' }}, function(err, conf) { var twitter = new TwitterNode({ user: conf.username, password: conf.password, track: ['#test'] }); twitter.addListener('tweet', function(tweet) { io.sockets.json.send(tweet); }).stream(); });
// client var socket = io.connect("http://localhost:8000"); socket.on('message', function(tweet) { console.log(tweet); });
まずわからんかったのはドキュメントがほとんど
io.sockets.on('connection', function (socket) { socket.broadcast.emit('user connected'); });
みたいにコネクションごとにsocketオブジェクト作ってて、今回みたいのの場合、クライアントのコネクション毎にStreaming APIのコネクション張るわけにはいかないので
twitter.addListener('tweet', function(tweet) { io.sockets.json.send(tweet); }).stream();
みたいにしないといけなかったわけだけど、この辺がsocket.io初心者でいまいちわからんかった。
しかもこの辺の書き方が0.6系と変わってるのかな?ググってでてきたの参考にしたけど動かんかったので。
たったの50行! node.js でツイート垂れ流しサイト作成法 - かつての虫けらロック