sinatra-rocketio 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.1.2 2013-03-25
2
+
3
+ * retry get /rocketio/settings
4
+
1
5
  === 0.1.1 2013-03-25
2
6
 
3
7
  * ruby client - use comet if websocket port close
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
2
  module RocketIO
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
@@ -14,15 +14,38 @@ module Sinatra
14
14
  include EventEmitter
15
15
  attr_reader :settings, :type, :io
16
16
 
17
+ public
17
18
  def initialize(url, opt={:type => :websocket})
19
+ @url = url
18
20
  @type = opt[:type].to_sym
19
21
  @io = nil
20
- @settings = JSON.parse HTTParty.get("#{url}/rocketio/settings").body
22
+ @settings = nil
21
23
  @ws_close_thread = nil
22
24
  self
23
25
  end
24
26
 
27
+ private
28
+ def get_settings
29
+ url = "#{@url}/rocketio/settings"
30
+ begin
31
+ res = HTTParty.get url
32
+ unless res.code == 200
33
+ emit :error, "#{res.code} get error (#{url})"
34
+ sleep 10
35
+ get_settings
36
+ else
37
+ @settings = JSON.parse res.body
38
+ end
39
+ rescue => e
40
+ emit :error, "#{e} (#{url})"
41
+ sleep 10
42
+ get_settings
43
+ end
44
+ end
45
+
46
+ public
25
47
  def connect
48
+ get_settings unless @settings
26
49
  this = self
27
50
  if @type == :websocket and @settings.include? 'websocket'
28
51
  @io = Sinatra::WebSocketIO::Client.new(@settings['websocket']).connect
@@ -54,11 +77,11 @@ module Sinatra
54
77
  end
55
78
 
56
79
  def close
57
- @io.close
80
+ @io.close if @io
58
81
  end
59
82
 
60
83
  def push(type, data)
61
- @io.push type, data
84
+ @io.push type, data if @io
62
85
  end
63
86
 
64
87
  def method_missing(name, *args)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-rocketio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -271,7 +271,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
271
271
  version: '0'
272
272
  segments:
273
273
  - 0
274
- hash: -1955004754093144162
274
+ hash: 1593017263457838199
275
275
  required_rubygems_version: !ruby/object:Gem::Requirement
276
276
  none: false
277
277
  requirements:
@@ -280,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
280
  version: '0'
281
281
  segments:
282
282
  - 0
283
- hash: -1955004754093144162
283
+ hash: 1593017263457838199
284
284
  requirements: []
285
285
  rubyforge_project:
286
286
  rubygems_version: 1.8.24