読者です 読者をやめる 読者になる 読者になる

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 でツイート垂れ流しサイト作成法 - かつての虫けらロック