seapig-client 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 43b204c40288eb02aa5d36a5a4340d2efd895371
4
- data.tar.gz: 40f4f6fc3e561c77433d11f504385348f7801986
3
+ metadata.gz: c85c9742df745b66c263c58793d7651c2e47f081
4
+ data.tar.gz: d8f5c63f05b55914e2a2514da60f4a66f64ac717
5
5
  SHA512:
6
- metadata.gz: c937e6c30e3931a79417ac4a1a08f303f6bf76b434048413a4070095ea66ffd0c9274cdb14fbba3962701087c77719e7a1c00136da891a6858dfb4cd3c33f8b7
7
- data.tar.gz: 041bbea836c93cdc48e87b1aa52a91774eb44cce64e7d9c765075491aa6c3d41e8c4ea00c575cc8f08b22d4e4c2a1444f03c7fa0fa531cc68ebcf784fd8320ce
6
+ metadata.gz: a346602a2e0ac18c9a333685471d0c2125ffd603704a7e76059ec96dc207f0297536ece9acd36effd95a71218a23b8532bfa8a8364cbad470bf55a86853412da
7
+ data.tar.gz: e9321722d529bce9ede40dda180bcbafd5deeeee9839ed5c13905bd720770b79b4035b19a7aad4f4ea543aa9ef67c2c168f29d055affe0fe9a47e60f091af20e
data/lib/seapig/client.rb CHANGED
@@ -13,8 +13,29 @@ class SeapigServer
13
13
  @options = options
14
14
  @slave_objects = {}
15
15
  @master_objects = {}
16
+
17
+ connect
18
+ end
19
+
20
+
21
+ def connect
22
+
23
+ if @socket
24
+ @socket.onclose {}
25
+ @socket.close
26
+ end
27
+
28
+ @timeout_timer ||= EM.add_periodic_timer(10) {
29
+ next if not @socket
30
+ next if Time.new.to_f - @last_communication_at < 20
31
+ puts "Seapig ping timeout, reconnecting"
32
+ connect
33
+ }
34
+
35
+ @connected = false
16
36
 
17
- @socket = WebSocket::EventMachine::Client.connect(uri: uri)
37
+ @last_communication_at = Time.new.to_f
38
+ @socket = WebSocket::EventMachine::Client.connect(uri: @uri)
18
39
 
19
40
  @socket.onopen {
20
41
  @connected = true
@@ -26,6 +47,7 @@ class SeapigServer
26
47
  @socket.send JSON.dump(action: 'object-producer-register', pattern: object_id)
27
48
  object.upload(0, {})
28
49
  }
50
+ @last_communication_at = Time.new.to_f
29
51
  }
30
52
 
31
53
  @socket.onmessage { |message|
@@ -45,20 +67,32 @@ class SeapigServer
45
67
  else
46
68
  p :wtf, message
47
69
  end
70
+ @last_communication_at = Time.new.to_f
48
71
  }
49
72
 
50
73
  @socket.onclose { |code, reason|
51
- if @connected
52
- puts 'Seapig connection died, quitting'
53
- EM.stop
54
- end
74
+ puts 'Seapig connection died unexpectedly, reconnecting'
75
+ connect
55
76
  }
56
- end
57
77
 
78
+ @socket.onping {
79
+ @last_communication_at = Time.new.to_f
80
+ }
81
+
82
+ end
83
+
58
84
 
59
85
  def disconnect
60
86
  @connected = false
61
- @socket.close
87
+ if @timeout_timer
88
+ @timeout_timer.cancel
89
+ @timeout_timer = nil
90
+ end
91
+ if @socket
92
+ @socket.onclose {}
93
+ @socket.close
94
+ @socket = nil
95
+ end
62
96
  end
63
97
 
64
98
 
@@ -1,3 +1,3 @@
1
1
  module Seapig
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seapig-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - yunta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-06 00:00:00.000000000 Z
11
+ date: 2016-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-eventmachine-client