class Grenache::Ws

Public Instance Methods

listen(key, port, opts={}, &block) click to toggle source
# File lib/grenache/ws.rb, line 6
def listen(key, port,  opts={}, &block)
  EM.defer {
    @ws = WebsocketServer.new port, &block
    @ws.start_server
  }

  announce(key, port, opts) do |res|
    puts "#{key} announced #{res}"
  end
end
request(key, payload, &cb) click to toggle source
# File lib/grenache/ws.rb, line 17
def request(key, payload, &cb)
  json = ServiceMessage.new(payload,key).to_json
  if service_cache[key] && service_cache[key].connected?
    service_cache[key].send json
  else
    lookup key do |services|
      if services && services.length > 0
        service = services.sample
        service_cache[key] = WebsocketClient.new(service, &cb)
        service_cache[key].send json
      else
        cb.call ["NoServiceFound", nil]
      end
    end
  end
end
service_cache() click to toggle source
# File lib/grenache/ws.rb, line 34
def service_cache
  @service_cache ||= {}
end