signalwire 2.3.0 → 2.3.1

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
  SHA256:
3
- metadata.gz: 6165a9529b9376430f0d3d27ee60d19e0fef310ceb5bf9ec8ac602b4cf0d45f6
4
- data.tar.gz: 56cd7d1ae685944c202bb82000d4549da11960bc278ddc977b5cc728a2019851
3
+ metadata.gz: 37ac58e5e91849e4c0d59ab3958741297f2964e00b839759d165c90231ad226f
4
+ data.tar.gz: 1413019319f177546936cc684447ba417838cb7d35fdcd4b8b7d1a08719569ca
5
5
  SHA512:
6
- metadata.gz: 96659014e4dd5da3a222f9690085b5be43c625d3f1ff767a30574c3c90edd1ddc2abf31b757bc5a0eb54f99d7d7f248b170c2067c087a6f75775a2aac49b3dba
7
- data.tar.gz: '070834c4ac95d63981b45ec4b8684f4b2d5b385eb8c24e0bf9fcc7036a76144f9cdedf37a19d6e19d193dd3485ab0837b10d87ee6945f2d3797fa76eda2249da'
6
+ metadata.gz: 4e2c0471c12a90e88c288457240506ea796e02de1bbbd4e5451f4457d4b19d489fc803326cdffd700fb86f34cef57ab5cc6521f6b1b8556ef3778d1e65b61b4b
7
+ data.tar.gz: d2833633a7461d91d5e5325e8f9869c033c529564969170b8243c6a2cf57b0016c849bdf623070fad7d8a25636862b3d81a5385cb1f58b5e238b86ef13c34974
data/.drone.yml CHANGED
@@ -3,8 +3,9 @@ name: default
3
3
 
4
4
  steps:
5
5
  - name: test
6
- image: ruby:2.5
6
+ image: ruby:2.6
7
7
  commands:
8
+ - gem install bundler
8
9
  - bundle install --jobs=3 --retry=3
9
10
  - bundle exec rspec
10
11
 
@@ -5,6 +5,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.3.1] - 2019-12-20
9
+ ### Changed
10
+ - Keepalive now uses `blade.ping`.
11
+
8
12
  ## [2.3.0] - 2019-10-22
9
13
  ### Added
10
14
  - Add `pause` and `resume` on `PlayAction`.
@@ -9,4 +9,5 @@ require 'signalwire/blade/connection'
9
9
  require 'signalwire/blade/message'
10
10
  require 'signalwire/blade/message/connect'
11
11
  require 'signalwire/blade/message/execute'
12
+ require 'signalwire/blade/message/ping'
12
13
  require 'signalwire/blade/message/subscribe'
@@ -25,6 +25,8 @@ module Signalwire::Blade
25
25
  @inbound_queue = EM::Queue.new
26
26
  @outbound_queue = EM::Queue.new
27
27
 
28
+ @keep_alive_timer = nil
29
+
28
30
  @shutdown_list = []
29
31
  end
30
32
 
@@ -37,7 +39,7 @@ module Signalwire::Blade
37
39
  end
38
40
 
39
41
  def reconnect!
40
- @connected = false
42
+ clear_connections
41
43
  return if @shutdown
42
44
  sleep Signalwire::Blade::RECONNECT_PERIOD
43
45
  logger.info "Attempting reconnection"
@@ -69,13 +71,14 @@ module Signalwire::Blade
69
71
  begin
70
72
  @connected = true
71
73
  myreq = connect_request
72
- start_periodic_timer
74
+ @pong = nil
73
75
 
74
76
  write_command(myreq) do |event|
75
77
  @session_id = event.dig(:result, :sessionid) unless @session_id
76
78
  @node_id = event.dig(:result, :nodeid) unless @node_d
77
79
  logger.info "Blade Session connected with id: #{@session_id}"
78
80
  broadcast :connected, event
81
+ keep_alive
79
82
  end
80
83
 
81
84
  rescue StandardError => e
@@ -127,18 +130,28 @@ module Signalwire::Blade
127
130
  block_given? ? write_command(Execute.new(params), &block) : write_command(Execute.new(params))
128
131
  end
129
132
 
133
+ def ping(&block)
134
+ block_given? ? write_command(Ping.new, &block) : write_command(Ping.new)
135
+ end
136
+
130
137
  def subscribe(params, &block)
131
138
  block_given? ? write_command(Subscribe.new(params), &block) : write_command(Subscribe.new(params))
132
139
  end
133
140
 
134
141
  def handle_close
142
+ logger.warn "WS Socket closed!"
135
143
  reconnect!
136
144
  end
137
145
 
138
- def disconnect!
139
- # logger.info 'Stopping Blade event loop'
146
+ def clear_connections
140
147
  @ws = nil
141
148
  @connected = false
149
+ @keep_alive_timer.cancel if @keep_alive_timer
150
+ end
151
+
152
+ def disconnect!
153
+ # logger.info 'Stopping Blade event loop'
154
+ clear_connections
142
155
  EM.stop
143
156
  end
144
157
 
@@ -169,19 +182,19 @@ module Signalwire::Blade
169
182
  @connected == true
170
183
  end
171
184
 
172
- def start_periodic_timer
173
- pinger = EventMachine::PeriodicTimer.new(Signalwire::Relay::PING_TIMEOUT) do
174
- timeouter = EventMachine::Timer.new(2) do
175
- # reconnect logic goes here
176
- logger.error "We got disconnected!"
177
- pinger.cancel
185
+ def keep_alive
186
+ @pong = false
187
+
188
+ ping do
189
+ @pong = true
190
+ end
191
+
192
+ @keep_alive_timer = EventMachine::Timer.new(Signalwire::Relay::PING_TIMEOUT) do
193
+ if @pong === false
194
+ logger.error "Ping failed"
178
195
  reconnect! if connected?
179
- end
180
-
181
- if @connected
182
- @ws.ping 'detecting presence' do
183
- timeouter.cancel
184
- end
196
+ else
197
+ keep_alive
185
198
  end
186
199
  end
187
200
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Signalwire::Blade
4
+ class Ping < Message
5
+ # Creates a Ping message
6
+ #
7
+
8
+ def initialize
9
+ @payload = {
10
+ method: 'blade.ping',
11
+ params: {}
12
+ }
13
+ end
14
+ end
15
+ end
16
+
@@ -4,7 +4,7 @@ module Signalwire::Relay
4
4
  DEFAULT_URL = 'relay.signalwire.com'
5
5
  COMMAND_TIMEOUT = 30
6
6
  DEFAULT_CALL_TIMEOUT = 30
7
- PING_TIMEOUT = 5
7
+ PING_TIMEOUT = 10
8
8
  DEFAULT_LANGUAGE = 'en-US'
9
9
  DEFAULT_GENDER = 'female'
10
10
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Signalwire
4
- VERSION = '2.3.0'
4
+ VERSION = '2.3.1'
5
5
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.required_ruby_version = '>= 2.0'
26
26
 
27
- spec.add_development_dependency 'bundler', '~> 1.16'
27
+ spec.add_development_dependency 'bundler', '~> 2.1'
28
28
  spec.add_development_dependency 'bundler-audit', '~> 0.6.1'
29
29
  spec.add_development_dependency 'guard-rspec', '~> 4.7.3'
30
30
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signalwire
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SignalWire Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-22 00:00:00.000000000 Z
11
+ date: 2019-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler-audit
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +277,7 @@ files:
277
277
  - lib/signalwire/blade/message.rb
278
278
  - lib/signalwire/blade/message/connect.rb
279
279
  - lib/signalwire/blade/message/execute.rb
280
+ - lib/signalwire/blade/message/ping.rb
280
281
  - lib/signalwire/blade/message/subscribe.rb
281
282
  - lib/signalwire/common.rb
282
283
  - lib/signalwire/logger.rb
@@ -367,7 +368,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
367
368
  - !ruby/object:Gem::Version
368
369
  version: '0'
369
370
  requirements: []
370
- rubygems_version: 3.0.3
371
+ rubygems_version: 3.0.6
371
372
  signing_key:
372
373
  specification_version: 4
373
374
  summary: Ruby client for Signalwire