faye-reconnect 0.0.3 → 1.0.0

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
- SHA1:
3
- metadata.gz: 34457f6dc6d2422c700fcf64f859faa2b26d99c2
4
- data.tar.gz: bebc0fe60b864e93e15120ef69b6c5bdd9c78560
2
+ SHA256:
3
+ metadata.gz: '09c9aa50ab9b10bc3ab23fc21f523785772429819b0730c868640a23bc883c03'
4
+ data.tar.gz: 9800a0e214785d34fc1b522ba850d523e4586e593835058de40f4aa5a9e41873
5
5
  SHA512:
6
- metadata.gz: 66bf5efd7aef929a1646b268ce15675473ba511e498c6c6b20be0a21c8d5325b45f25b9df97d5e7c3e9fbbc046ae905aa69137b7d0dc91816920217f1d546f40
7
- data.tar.gz: 044e91fba9132d88689ed2da546cfdcb26ae62ccf0006a998be3ee75a4e7c9a9c8740a986e582c0472336aaaa331fc00fa61f83c880ef631605d321408fcc9d1
6
+ metadata.gz: 280ef8208c7155290d49f916fbd3ee34d935ee666a71b4b00c4590b47d9bd56a8de06f1539f97d11cbeef0b7b22bdd98a0727fd6a396d1f8d7cfe44a6df5d0a6
7
+ data.tar.gz: 8fd10daa1ffdb2d2a699845aa7859157c11cffea6a68b1410a62d6b8a6ccfa613cdb03c124ffee2873282797df6575ad8c78f1a77be4fbc232e9811c7878e972
data/README.md CHANGED
@@ -39,7 +39,7 @@ server.add_extension Faye::Reconnect::ServerExtension.new(server)
39
39
 
40
40
  ### Client Side
41
41
 
42
- The client extension has a dependency on redis.
42
+ The client extension has a dependency on redis.
43
43
  It uses redis to persist the client id after each successful handshake so it can re-use it when trying to reconnect.
44
44
 
45
45
  Add the extension to your faye client :
@@ -66,7 +66,7 @@ If you don't specify redis options, the ones provided in the above example will
66
66
  You may already have something along the lines of :
67
67
 
68
68
  ```ruby
69
- trap('TERM') do
69
+ trap('TERM') do
70
70
  client.disconnect
71
71
  end
72
72
  ```
@@ -74,7 +74,7 @@ end
74
74
  If you plan on reconnecting with the same client id and get missing messages, you have to use the ``stop!`` method provided by this gem :
75
75
 
76
76
  ```ruby
77
- trap('TERM') do
77
+ trap('TERM') do
78
78
  client.stop!
79
79
  end
80
80
  ```
@@ -84,7 +84,7 @@ Instead of sending a ``/meta/disconnect`` message to the server, it will cleanly
84
84
 
85
85
  ## Contributing
86
86
 
87
- 1. Fork it ( https://github.com/dimelo/faye-reconnect/fork )
87
+ 1. Fork it (https://github.com/jarthod/faye-reconnect/fork)
88
88
  2. Create your feature branch (`git checkout -b my-new-feature`)
89
89
  3. Commit your changes (`git commit -am 'Add some feature'`)
90
90
  4. Push to the branch (`git push origin my-new-feature`)
@@ -6,8 +6,8 @@ require 'faye/reconnect/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "faye-reconnect"
8
8
  spec.version = Faye::Reconnect::VERSION
9
- spec.authors = ["Adrien Siami"]
10
- spec.email = ["adrien.siami@dimelo.com"]
9
+ spec.authors = ["Adrien Jarthon", "Adrien Siami"]
10
+ spec.email = ["jobs@adrienjarthon.com"]
11
11
  spec.summary = "Allow a long running faye client to reconnect to a faye server with the same client ID"
12
12
  spec.description = "Allow a long running faye client to reconnect to a faye server with the same client ID"
13
13
  spec.homepage = ""
@@ -20,10 +20,10 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_runtime_dependency 'em-hiredis', '~> 0.3'
22
22
 
23
- spec.add_development_dependency 'bundler', '~> 1.7'
24
- spec.add_development_dependency 'rake', '~> 10.0'
25
- spec.add_development_dependency 'rspec', '~> 3.1.0'
26
- spec.add_development_dependency 'rspec-eventmachine', '~> 0.2.0'
23
+ spec.add_development_dependency 'bundler'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rspec-eventmachine'
27
27
  spec.add_development_dependency 'thin'
28
28
  spec.add_development_dependency 'pry-byebug'
29
29
 
@@ -4,9 +4,14 @@ module Faye
4
4
  module Reconnect
5
5
  class ClientExtension
6
6
 
7
- def initialize redis: nil, name:
7
+ def self.finalize(redis)
8
+ proc { redis&.close_connection }
9
+ end
10
+
11
+ def initialize redis: nil, name:, on_handshake: nil
8
12
  @name = name
9
13
  @clientIdFetched = false
14
+ @on_handshake = on_handshake
10
15
  redis ||= {}
11
16
  redis[:host] ||= 'localhost'
12
17
  redis[:port] ||= 6379
@@ -15,6 +20,8 @@ module Faye
15
20
  @redis = EventMachine::Hiredis::Client.new(redis[:host], redis[:port], redis[:password], redis[:database])
16
21
  EM.schedule do
17
22
  @redis.connect
23
+ @redis.client('setname', "faye-reconnect/#{name}[#{Socket.gethostname}][#{Process.pid}]")
24
+ ObjectSpace.define_finalizer(self, self.class.finalize(@redis))
18
25
  @redis.errback do |reason|
19
26
  raise "Connection to redis failed : #{reason}"
20
27
  end
@@ -25,6 +32,10 @@ module Faye
25
32
  "#{@name}/client_id"
26
33
  end
27
34
 
35
+ def close_redis_connection
36
+ @redis&.close_connection
37
+ end
38
+
28
39
  def fetch_client_id(&callback)
29
40
  if @clientIdFetched == false
30
41
  @clientIdFetched = true
@@ -48,6 +59,8 @@ module Faye
48
59
  elsif message['channel'] == '/meta/handshake'
49
60
  fetch_client_id do |clientId|
50
61
  message['previousClientId'] = clientId if !clientId.nil?
62
+ # Store the clientId sent with the /meta/handshake
63
+ @sent_client_id = clientId
51
64
  callback.call(message)
52
65
  end
53
66
  else
@@ -57,6 +70,7 @@ module Faye
57
70
 
58
71
  def incoming(message, callback)
59
72
  if message['channel'] == '/meta/handshake'
73
+ @on_handshake&.call(previous_client_id: @sent_client_id, new_client_id: message['clientId'])
60
74
  if message['error'] == 'Already connected' && message.key?('clientId')
61
75
  message.delete('error')
62
76
  message['successful'] = true
@@ -1,5 +1,5 @@
1
1
  module Faye
2
2
  module Reconnect
3
- VERSION = "0.0.3"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
@@ -3,7 +3,6 @@ require 'faye/reconnect'
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Faye::Reconnect::ClientExtension do
6
-
7
6
  it 'requires a name option' do
8
7
  expect {
9
8
  Faye::Reconnect::ClientExtension.new
@@ -13,4 +12,11 @@ describe Faye::Reconnect::ClientExtension do
13
12
  }.to_not raise_error
14
13
  end
15
14
 
15
+ describe '#close_redis_connection' do
16
+ it 'calls #close_connection on the redis client' do
17
+ faye_reconnect = Faye::Reconnect::ClientExtension.new(name: 'foobar')
18
+ expect_any_instance_of(EventMachine::Hiredis::Client).to receive(:close_connection).and_return(true)
19
+ faye_reconnect.close_redis_connection
20
+ end
21
+ end
16
22
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faye-reconnect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Adrien Jarthon
7
8
  - Adrien Siami
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-05-11 00:00:00.000000000 Z
12
+ date: 2020-06-23 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: em-hiredis
@@ -28,58 +29,58 @@ dependencies:
28
29
  name: bundler
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - "~>"
32
+ - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: '1.7'
34
+ version: '0'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - "~>"
39
+ - - ">="
39
40
  - !ruby/object:Gem::Version
40
- version: '1.7'
41
+ version: '0'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: rake
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
- - - "~>"
46
+ - - ">="
46
47
  - !ruby/object:Gem::Version
47
- version: '10.0'
48
+ version: '0'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
- - - "~>"
53
+ - - ">="
53
54
  - !ruby/object:Gem::Version
54
- version: '10.0'
55
+ version: '0'
55
56
  - !ruby/object:Gem::Dependency
56
57
  name: rspec
57
58
  requirement: !ruby/object:Gem::Requirement
58
59
  requirements:
59
- - - "~>"
60
+ - - ">="
60
61
  - !ruby/object:Gem::Version
61
- version: 3.1.0
62
+ version: '0'
62
63
  type: :development
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
- - - "~>"
67
+ - - ">="
67
68
  - !ruby/object:Gem::Version
68
- version: 3.1.0
69
+ version: '0'
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: rspec-eventmachine
71
72
  requirement: !ruby/object:Gem::Requirement
72
73
  requirements:
73
- - - "~>"
74
+ - - ">="
74
75
  - !ruby/object:Gem::Version
75
- version: 0.2.0
76
+ version: '0'
76
77
  type: :development
77
78
  prerelease: false
78
79
  version_requirements: !ruby/object:Gem::Requirement
79
80
  requirements:
80
- - - "~>"
81
+ - - ">="
81
82
  - !ruby/object:Gem::Version
82
- version: 0.2.0
83
+ version: '0'
83
84
  - !ruby/object:Gem::Dependency
84
85
  name: thin
85
86
  requirement: !ruby/object:Gem::Requirement
@@ -111,7 +112,7 @@ dependencies:
111
112
  description: Allow a long running faye client to reconnect to a faye server with the
112
113
  same client ID
113
114
  email:
114
- - adrien.siami@dimelo.com
115
+ - jobs@adrienjarthon.com
115
116
  executables: []
116
117
  extensions: []
117
118
  extra_rdoc_files: []
@@ -150,8 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
151
  - !ruby/object:Gem::Version
151
152
  version: '0'
152
153
  requirements: []
153
- rubyforge_project:
154
- rubygems_version: 2.5.1
154
+ rubygems_version: 3.1.2
155
155
  signing_key:
156
156
  specification_version: 4
157
157
  summary: Allow a long running faye client to reconnect to a faye server with the same