4月 032013
sinatraにSocketIOっぽいwebsocket/comet機能を追加できるプラグインを作っている。
今日はcometの負荷を軽くした。
shokai/sinatra-rocketio · GitHub
comet、複数回のサーバーへのpushをキューに溜めてまとめて送信するようにした。
cometioのpost_intervalで設定できる
設定例
set :cometio, :timeout => 120, :post_interval => 2post_interval => 2 でタメたキューを2秒ごとにサーバーに送る。
set :websocketio, :port => 8080
set :rocketio, :websocket => true, :comet => true # enable WebSocket and Comet
websocketは1プロセスで1万5千ぐらい接続できるんだけど、cometが重くて足ひっぱってたのでこれで軽くなったと思う。
例えばこういうコードの時に今まで10回pushされてたけど、10回分まとめてajaxするので軽い。
for(var i = 0; i < 10; i++){
io.push("chat", "hoge("+i+")");
}
sinatra-cometio v0.5.1から有効になってる機能で、sinatra-rocketioとは別のgemなので
bundle updateしてアップデートしてください