grenache-ruby-ws 0.2.2 → 0.2.12

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: daa23879e8e614041eb0a3b12c1ca2d6ef9af2c0
4
- data.tar.gz: 0c7be516fcfdfb2b20a3bf0036a32750f997d3ac
3
+ metadata.gz: 0d8e09ec7280bce519ad8be70ff54a7c41b527d9
4
+ data.tar.gz: 3a8cfee41845a3bc5c137a1b03178d229020cfda
5
5
  SHA512:
6
- metadata.gz: c585bf00d8bffc7af6550f8a4f7f04abf831cfc295bc385869db0b1b87c109dafdf91074e93951c7ecfc55d94d66362eb0b3738f0c3e782955e6340416a94633
7
- data.tar.gz: 456565238ad79fd78cf68f0c8b260235872fd6be2f0ed4d9f1abcd05f3b6a64eb2dbe38cb4ad81873fb7b4fa3e1210d2a0f075ff7756807e4a53c71717a64699
6
+ metadata.gz: d9885efe4809a77e34fab1b2ae6721d87b76025434f8f746efbff3a5c9c5dee92f45d3d946526b1e8841f3d88c39996b96378b6883f6f32a3baa0cb346773589
7
+ data.tar.gz: 72a476ab7b7fc9b1c9511f41a677aad9fd08751c524e2ec0ea3286bf408bf92470ac0275e66577d89cfb31031488d3083abe6d506a19500772410fa0aefe7108
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ gem "grenache-ruby-base", path: "../grenache-ruby-base"
data/README.md CHANGED
@@ -1 +1,131 @@
1
- # grenache-ruby-ws
1
+ # grenache-ruby-ws
2
+
3
+ <img src="logo.png" width="15%" />
4
+
5
+ Grenache is a micro-framework for connecting microservices. Its simple and optimized for performance.
6
+
7
+ Internally, Grenache uses Distributed Hash Tables (DHT, known from Bittorrent) for Peer to Peer connections. You can find more details how Grenche internally works at the [Main Project Homepage](https://github.com/bitfinexcom/grenache)
8
+
9
+ - [Setup](#setup)
10
+ - [Examples](#examples)
11
+ - [API](#api)
12
+
13
+ ## Setup
14
+
15
+ ### Install
16
+ ```
17
+ gem install grenache-ruby-ws
18
+ ```
19
+
20
+ ### Other Requirements
21
+
22
+ Install `Grenache Grape`: https://github.com/bitfinexcom/grenache-grape:
23
+
24
+ ```bash
25
+ npm i -g grenache-grape
26
+ ```
27
+
28
+ ```
29
+ // Start 2 Grapes
30
+ grape --dp 20001 --aph 30001 --bn '127.0.0.1:20002'
31
+ grape --dp 20002 --aph 40001 --bn '127.0.0.1:20001'
32
+ ```
33
+
34
+ ## Examples
35
+
36
+ #### RPC Server / Client
37
+
38
+ This RPC Server example announces a service called `rpc_test`
39
+ on the overlay network. When a request from a client is received,
40
+ it replies with `world`. It receives the payload `hello` from the
41
+ client.
42
+
43
+ The client sends `hello` and receives `world` from the server.
44
+
45
+ Internally the DHT is asked for the IP of the server and then the
46
+ request is done as Peer-to-Peer request via websockets.
47
+
48
+ **Grape:**
49
+
50
+ ```bash
51
+ grape --dp 20001 --aph 30001 --bn '127.0.0.1:20002'
52
+ grape --dp 20002 --aph 40001 --bn '127.0.0.1:20001'
53
+ ```
54
+
55
+ **Server:**
56
+
57
+ ```rb
58
+ require "grenache-ruby-ws"
59
+
60
+ EM.run do
61
+ Signal.trap("INT") { EventMachine.stop }
62
+ Signal.trap("TERM") { EventMachine.stop }
63
+
64
+ c = Grenache::Ws.new(grape_address: "http://127.0.0.1:40001/")
65
+ port = 5001
66
+
67
+ c.listen("test_service", port) do |req|
68
+ error = nil
69
+ [error,"hello #{req.payload}"]
70
+ end
71
+ end
72
+ ```
73
+
74
+ **Client:**
75
+
76
+ ```rb
77
+ require "grenache-ruby-ws"
78
+
79
+ c = Grenache::Ws.new(grape_address: "http://127.0.0.1:40001/")
80
+
81
+ EM.run do
82
+ 10.times do |n|
83
+ c.request("test_service","world #{n}") do |err, msg|
84
+ if err
85
+ puts "error: #{err}"
86
+ else
87
+ puts "response: #{msg}"
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+
94
+ ```
95
+
96
+ [Code Server](https://github.com/bitfinexcom/grenache-ruby-ws/blob/master/examples/worker.rb)
97
+ [Code Client](https://github.com/bitfinexcom/grenache-ruby-ws/blob/master/examples/client.rb)
98
+
99
+ ## API
100
+
101
+ ### Class: Grenache::Ws
102
+
103
+ ### Grenache::Ws.new(options)
104
+ - `options`
105
+ - `:grape_address` &lt;String&gt;
106
+ - `:timeout` &lt;Number&gt;
107
+
108
+ - `:auto_announce_interval` &lt;Number&gt;
109
+ - `:auto_announce` &lt;Boolean&gt;
110
+ - `:service_timeout` &lt;Number&gt;
111
+ - `:service_host` &lt;String&gt;
112
+
113
+ ### client.request(name, payload, options)
114
+ - `name` &lt;String&gt; Name of the service to address
115
+ - `payload` Payload to send
116
+ - `options`
117
+ - `:timeout` Timeout for the request
118
+
119
+ Sends a single request to a RPC server/worker.
120
+ [Example](https://github.com/bitfinexcom/grenache-ruby-ws/blob/master/examples/client.rb).
121
+
122
+
123
+ ### client.listen(key, port, options)
124
+ - `name` &lt;String&gt; Name of the service to announce
125
+ - `port` &lt;Number&gt; Port to listen
126
+ - `options`
127
+
128
+ Sets up a worker which connects to the DHT.
129
+ Listens on the given `port`.
130
+
131
+ [Example](https://github.com/bitfinexcom/grenache-ruby-ws/blob/master/examples/worker.rb).
@@ -1,7 +1,7 @@
1
1
  require_relative '../lib/grenache-ruby-ws.rb'
2
2
 
3
3
  Grenache::Ws.configure do |conf|
4
- conf.grape_address = "ws://127.0.0.1:30001"
4
+ conf.grape_address = "http://127.0.0.1:40002/"
5
5
  end
6
6
 
7
7
  EM.run do
@@ -15,5 +15,4 @@ EM.run do
15
15
  end
16
16
  end
17
17
  end
18
-
19
18
  end
@@ -1,16 +1,14 @@
1
1
  require_relative '../lib/grenache-ruby-ws.rb'
2
2
 
3
- Grenache::Ws.configure do |conf|
4
- conf.grape_address = "ws://127.0.0.1:30001"
5
- end
6
-
7
3
  EM.run do
8
4
 
9
5
  Signal.trap("INT") { EventMachine.stop }
10
6
  Signal.trap("TERM") { EventMachine.stop }
11
- c = Grenache::Ws.new
12
7
 
13
- c.listen('rpc_test',5004) do |req|
8
+ c = Grenache::Ws.new grape_address: "http://127.0.0.1:40002/"
9
+ port = 5004
10
+
11
+ c.listen('rpc_test', port) do |req|
14
12
  [nil,"hello #{req.payload}"]
15
13
  end
16
14
 
@@ -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.2.0"
22
+ spec.add_runtime_dependency "grenache-ruby-base", "~> 0.2.12"
23
23
  spec.add_runtime_dependency "oj", "~> 2.18"
24
24
  spec.add_runtime_dependency "thin", "~> 1.7"
25
25
 
@@ -42,6 +42,10 @@ module Grenache
42
42
  @ws.send(payload)
43
43
  end
44
44
 
45
+ def connected?
46
+ @connected
47
+ end
48
+
45
49
  private
46
50
  def ws_connect
47
51
  @ws = Faye::WebSocket::Client.new(@uri)
@@ -68,5 +72,6 @@ module Grenache
68
72
  def on_close(ev)
69
73
  @connected = false
70
74
  end
75
+
71
76
  end
72
77
  end
@@ -1,5 +1,5 @@
1
1
  module Grenache
2
2
  module Websocket
3
- VERSION = "0.2.2"
3
+ VERSION = "0.2.12"
4
4
  end
5
5
  end
@@ -19,9 +19,8 @@ module Grenache
19
19
  if service_cache[key] && service_cache[key].connected?
20
20
  service_cache[key].send json
21
21
  else
22
- service_cache.delete(key)
23
22
  lookup key do |services|
24
- if services.length > 0
23
+ if services && services.length > 0
25
24
  service = services.sample
26
25
  service_cache[key] = WebsocketClient.new(service, &cb)
27
26
  service_cache[key].send json
Binary file
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.2.2
4
+ version: 0.2.12
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-05-15 00:00:00.000000000 Z
11
+ date: 2017-06-24 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.2.0
47
+ version: 0.2.12
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.2.0
54
+ version: 0.2.12
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: oj
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +98,7 @@ files:
98
98
  - lib/grenache/websocket.rb
99
99
  - lib/grenache/websocket/version.rb
100
100
  - lib/grenache/ws.rb
101
+ - logo.png
101
102
  homepage: https://github.com/bitfinexcom/grenache-ruby-ws
102
103
  licenses:
103
104
  - MIT