nodeSocket.ioRuby

https://github.com/shokai/sinatra-rocketio


EventMachineWebthinjQuery
Ruby1.8.72.0.0


Sinatra使



gem install sinatra-rocketio


WebSocketComet使



sinatra使sinatrawebsocket
require 'sinatra'
require 'sinatra/rocketio'

modular styleclassregisterok
class MyApp < Sinatra::Base
register Sinatra::RocketIO
## 略
end


push


Sinatra
io = Sinatra::RocketIO

io.push :temperature, 35 # 全てのクライアントに送信
io.push :light, {:value => 150}, {:to => session_id} # 特定のクライアントへ
pushsinatragetpost
push


JS
<script src="<%= rocketio_js %>"></script>
haml
%script{:src => rocketio_js}

JavaScript
var io = new RocketIO().connect(); // WebSocketとCometの適当な方が使われる
io.on("temperature", function(value){
console.log("温度 : " + value);
}); // => "温度 : 35"
io.on("light", function(data){
console.log("明るさ : " + data.value);
}); // => "明るさ : 150"





JS
io.on("connect", function(){
io.push("chat", {name: "shokai", message: "hello"});
});

Ruby
io.on :chat do |data, client|
puts "#{data['name']} : #{data['message']} <#{client.session}> type:#{client.type}"
io.push :chat, data # 全クライアントに返送
end
chat



IDtype(websocketcomet)




Sinatra::RocketIO.on  
Sinatra::RocketIO.push ,  


var io = new RocketIO().connect(); ioRocketIO使
io.on(, ) 
io.push(, ) 


使


http://rocketio-chat.herokuapp.com/
herokuwebsocket使comet

http://dev.shokai.org:4000/
VPSwebsocketcomet使


 https://github.com/shokai/rocketio-chat-sample
Ruby 25JS 39


CometSinatra CometIOSinatra
WebSocketSinatra::WebSocketIOCometAPI使
RocketIO


event_emitter.jsevent_emitter.rbJSRuby使


2MacMiniVMWareUbuntu
WebSocket15Comet500
WebSocket11push0.7
CPU

1OS
https://github.com/shokai/sinatra-websocketio/wiki/C10K