WebSocket のミニマムな client/server サンプル
WebSocket のミニマムな client/server サンプルをメモ。
サーバサイド
サーバサイドは EM-WebSocket を使った Ruby による実装。送られてきたメッセージを接続済みの clients に送信する。
require 'em-websocket'
conns = Array.new
EM::WebSocket.start(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen do
puts "Connected"
ws.send "Connected"
conns.push(ws) unless conns.index(ws)
end
ws.onmessage do |msg|
puts "Received #{msg}"
ws.send msg
conns.each do |conn|
conn.send(msg) unless conn == ws
end
end
ws.onclose do
puts "Closed"
conns.delete(ws)
end
end
‘em-websocket’ の gem をインストール後、$ ruby server.rb
でサーバを起動。
クライアントサイド
適当な html ファイルで次のスクリプトをロードする。
var ws = new WebSocket("ws://localhost:8080");
ws.onclose = function() {
log("Closed");
};
ws.onopen = function() {
log('Connected');
ws.send("Hello");
};
ws.onmessage = function(e) {
log(e.data);
};
function log(msg) {
console.log("[log] " + msg);
};