Class: Grenache::Ws
- Inherits:
-
Base
- Object
- Base
- Grenache::Ws
- Defined in:
- lib/grenache/ws.rb
Instance Method Summary collapse
- #listen(key, port, opts = {}, &block) ⇒ Object
- #request(key, payload, &cb) ⇒ Object
- #service_cache ⇒ Object
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_cache ⇒ Object
35 36 37 |
# File 'lib/grenache/ws.rb', line 35 def service_cache @service_cache ||= {} end |