grenache-ruby-ws 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
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