Class: Grenache::Ws

Inherits:
Base
  • Object
show all
Defined in:
lib/grenache/ws.rb

Instance Method Summary collapse

Instance Method Details

#listen(key, port, opts = {}, &block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# 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) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/grenache/ws.rb', line 17

def request(key, payload, &cb)
  json = ServiceMessage.new(payload).to_json
  if service_cache[key] && service_cache[key].connected?
    service_cache[key].send json
  else
    service_cache.delete(key)
    lookup key do |services|
      if 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_cacheObject



35
36
37
# File 'lib/grenache/ws.rb', line 35

def service_cache
  @service_cache ||= {}
end