11月 162012
追記:RocketIOに統合されました → 橋本商会 » Sinatra RocketIOというプラグイン作った、これでWebSocketとCometが使える
******
作った
Sinatra Comet I/O
インストール
gem install sinatra-cometio
通信を意識せずに、サーバー側からクライアントの関数、クライアント側からサーバーの関数を呼び出せる。
サーバーからクライアントへプッシュする例
サーバー側
Ruby
require 'sinatra'
require 'sinatra/cometio'
CometIO.push :chat, :name => "shokai", :message=> "hello work!!"
クライアント側
HTML
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="<%= cometio_js %>"></script>
JS
var io = new CometIO().connect();
io.on("chat", function(data){
console.log(data.name + " : " + data.message); // -> "shokai : hello work!!"
});
クライアント→サーバーの例や、新規クライアント接続イベントやエラーイベント等についてもSinatra Comet I/Oに書きました
サンプルとしてHerokuでチャットを作った。 http://cometio-chat.herokuapp.com
チャットの場合同時に300クライアントぐらいしか接続できないっぽい。スケールさせる方法はよくわからない。
少人数で使うちょっとしたツールにリッチなUIを持たせる時などに便利だと思います。
色々やってたら大丈夫になりました