signalwire 2.3.0 → 2.3.1

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
  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