grenache-ruby-ws 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52d67ac3c810b12cc75023cb3bd2a087bc2f3d9c
4
- data.tar.gz: f817949e2b9aeb49c54208f42d306eaa1a9ce365
3
+ metadata.gz: 52058c7e1b1fc3af0505ff0fc7f0955a312b8e7c
4
+ data.tar.gz: 9d0c9ae28dc19598ce2fa33ad599a9462b1ae861
5
5
  SHA512:
6
- metadata.gz: b0cf5afba2f1aaa05315feca39c07d3854253cf8c88f4fbcbda49dca69262924e8b8daab7eca743fcf754197affa1f964aea6f3dfd770ef7e74ea0dca0489b7c
7
- data.tar.gz: 42301f6f816adfa104e622b06f02e6cc8d672d2e7c1c51712ba08f80ceb4f371a2be511826f18eaf5913da20b1f3f08991861ae3b85ba6b5ba313ef45915efa0
6
+ metadata.gz: f242afbb49ed58ec927c1639500593bc528947d916de0910796d4fada99e2ab0e73d36fca9831945470d6410a0fae8f26aaa5879ec166f8de4e112c30385cac1
7
+ data.tar.gz: 86425524d0d33ec6ee461555b2eb6c46e4b67eb9d0d227dafd83b5330e84d953fbfa0c5c137249bd124e085b92f65893518f74d11f393ea20d2e0356fec9c469
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_runtime_dependency "eventmachine", "~> 1.0"
21
21
  spec.add_runtime_dependency "faye-websocket", "~> 0.10"
22
- spec.add_runtime_dependency "grenache-ruby-base", ">= 0.1.8"
22
+ spec.add_runtime_dependency "grenache-ruby-base", ">= 0.1.9"
23
23
  spec.add_runtime_dependency "oj", "~> 2.18"
24
24
  spec.add_runtime_dependency "thin", "~> 1.7"
25
25
 
@@ -1,5 +1,5 @@
1
1
  module Grenache
2
2
  module Websocket
3
- VERSION = "0.1.8"
3
+ VERSION = "0.1.9"
4
4
  end
5
5
  end
@@ -24,6 +24,10 @@ module Grenache
24
24
  def send(payload)
25
25
  @server.send(payload)
26
26
  end
27
+
28
+ def connected?
29
+ !! @ws
30
+ end
27
31
  end
28
32
 
29
33
  class WebsocketClient
data/lib/grenache/ws.rb CHANGED
@@ -2,6 +2,7 @@ module Grenache
2
2
  class NoPeerFoundError < Exception; end
3
3
 
4
4
  class Ws < Grenache::Base
5
+
5
6
  def listen(key, port, opts={}, &block)
6
7
  EM.defer {
7
8
  @ws = WebsocketServer.new port, &block
@@ -14,17 +15,26 @@ module Grenache
14
15
  end
15
16
 
16
17
  def request(key, payload, &cb)
17
- lookup key do |services|
18
- if services.length > 0
19
- json = Message.req(key,payload).to_json
20
- service = services.sample
21
- ws = WebsocketClient.new(service, &cb)
22
- ws.send json
23
- else
24
- cb.call ["NoServiceFound", nil]
18
+ json = Message.req(key,payload).to_json
19
+ if service_cache[key] && service_cache[key].connected?
20
+ service_cache[key].send json
21
+ else
22
+ service_cache.delete(key)
23
+ lookup key do |services|
24
+ if services.length > 0
25
+ service = services.sample
26
+ service_cache[key] = WebsocketClient.new(service, &cb)
27
+ service_cache[key].send json
28
+ else
29
+ cb.call ["NoServiceFound", nil]
30
+ end
25
31
  end
26
32
  end
27
33
  end
28
34
 
35
+ def service_cache
36
+ @service_cache ||= {}
37
+ end
38
+
29
39
  end
30
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grenache-ruby-ws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bitfinex <info@bitfinex.com>
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-20 00:00:00.000000000 Z
11
+ date: 2017-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eventmachine
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.8
47
+ version: 0.1.9
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.8
54
+ version: 0.1.9
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: oj
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  requirements: []
120
120
  rubyforge_project:
121
- rubygems_version: 2.4.5.1
121
+ rubygems_version: 2.4.8
122
122
  signing_key:
123
123
  specification_version: 4
124
124
  summary: Websocket client for Grenache