koaとsocket.ioの連携
最近話題のkoaっていうNodeのWAFがございまして、触ってみたかったので触ってみたはなしです。
ちょっと試すつもりがドはまりんぐ。
koaについては以下の記事をご参照ください。
Express - ごめんなさい、koajsに浮気しちゃいました - Qiita [キータ]
かずぽんブログ • 新しいWebフレームワーク Koa について
ECMAScript6から使える Generator(yield) を使う事でイケてる感じにしたExpressみたいな感じです。
実際Expressよりなうくて良い感じに書けるんですが、何せドキュメント少なくてしょんぼりんぐ。
Socket.IOと組み合わせたドキュメントが(ググり力低いために)見つからず、
モニョモニョドハマりしながら適当に書いてみました。
たぶんポイントは app.callback()
を渡すポイント。
var koa = require('koa'), app = koa(); app.use(route.get('/', function*() { this.body = 'hello world'; })); //appの定義が終わったあとにcallbackしないとちゃんと動かないよ。たぶん。 var server = require('http').Server(app.callback()) , io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { /* something */ }); server.listen(3000);
socket.ioとかexpressみたいなやつと連携するときには、
app.callback() 使うのが正解っぽいんですが、これが早過ぎるとアカンぽくて、
app.use()
が諸々終わった後に渡してあげないと何故か動かんかったです。
ソースまで追っかけてないのであれですが。
詳しくはレポジトリみてくだしぃ。
koaの感想
まず、ググるときに、kao
ってtypoしまくったので若干イラッってしたよ!
"koa"
とかkoajs
とかしようね。
koa
だけだとコア
って日本語もマッチしちゃうからあんだかなーだよ!
それはさておき、たぶんかなり革新的でありながら、
特に出来る事が代わったわけでもない現状だと趣味要素が強く、
んだけど1年後にはExpress
捨てられてkoa
一色になってる気がする、
そんな感じのフレームワークでございました。
ただ、現状ではドキュメント(および周辺のブログ記事とか)や、
関連ライブラリ類がまだ少ないので、先走りたい人は楽しいと思いますが、
初心者ならExpress使っとくのが無難だと思います。
といいつつ自分はSocketStreamフェチなので、
SocketStreamにもGeneratorとか取り入れられるといいなーと思ってますっ!