Sha256: c718508fec46dc470de32a23264a4e8268b97c2d42eae1e2db45108b459388c5

Contents?: true

Size: 660 Bytes

Versions: 1

Compression:

Stored size: 660 Bytes

Contents

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)
    @reactor.ready!
  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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fnordmetric-1.2.6 lib/fnordmetric/web/websocket.rb