require "eventmachine" require 'rack/websocket' require "em-hiredis" require "json" class FnordMetric::WebSocket < Rack::WebSocket::Application def initialize super @reactor = FnordMetric::Reactor.new @uuid = "websocket-#{get_uuid}" end def on_open(env) # socket openened :) end def on_message(env, message) begin message = JSON.parse(message) rescue puts "websocket: invalid json" else message["_eid"] ||= get_uuid message["_sender"] = @uuid @reactor.execute(self, message).each do |m| send_data m.to_json end end end def get_uuid rand(8**64).to_s(36) end end