sinatra-cometio 0.4.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5f2a85bfa87462fa70ad499c1667c9709b6b1b8c
4
+ data.tar.gz: c616152d43be0b88ad5c4c8b5a78416248efffeb
5
+ SHA512:
6
+ metadata.gz: c74e253c71ffb4f9174032ba4182aa66f05178f984d6eb2b675d30222919cfb6a11687eb0fb6bbb60dca16132e05de3bde326dc2ee5c520d2a099b14c7bc76ac
7
+ data.tar.gz: ce5cef5013ebc0aa373e1a337dbfb333b4cabc4293f040facf6bc880f9ae6e9045941ba3dc8b3ff9f81ab89321da76391f871063f76baca8188de21bbfddcf34
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.5.0 2013-04-02
2
+
3
+ * use queue javascript side push
4
+
1
5
  === 0.4.3 2013-03-26
2
6
 
3
7
  * bugfix Sinatra::CometIO::push
data/lib/js/cometio.js CHANGED
@@ -4,16 +4,18 @@ var CometIO = function(){
4
4
  this.session = null;
5
5
  var running = false;
6
6
  var self = this;
7
+ var post_queue = [];
7
8
 
8
- this.push = function(type, data){
9
- if(!self.session){
10
- self.emit("error", "CometIO not connected");
11
- return;
12
- }
9
+ var flush = function(){
10
+ if(!running || post_queue.length < 1) return;
11
+ var post_data = {
12
+ session: self.session,
13
+ events: post_queue
14
+ };
13
15
  $.ajax(
14
16
  {
15
17
  url : self.url,
16
- data : {type : type, data : data, session : self.session},
18
+ data : post_data,
17
19
  success : function(data){
18
20
  },
19
21
  error : function(req, stat, e){
@@ -26,6 +28,16 @@ var CometIO = function(){
26
28
  timeout : 10000
27
29
  }
28
30
  );
31
+ post_queue = [];
32
+ };
33
+ setInterval(flush, 1000);
34
+
35
+ this.push = function(type, data){
36
+ if(!running || !self.session){
37
+ self.emit("error", "CometIO not connected");
38
+ return;
39
+ }
40
+ post_queue.push({type: type, data: data})
29
41
  };
30
42
 
31
43
  this.connect = function(){
@@ -22,8 +22,12 @@ module Sinatra
22
22
  end
23
23
 
24
24
  def push(type, data)
25
+ post_data = {
26
+ :session => @session,
27
+ :events => [{:type => type, :data => data}]
28
+ }
25
29
  begin
26
- res = HTTParty.post @url, :timeout => 10, :body => {:type => type, :data => data, :session => @session}
30
+ res = HTTParty.post @url, :timeout => 10, :body => post_data
27
31
  emit :error, "CometIO push error" unless res.code == 200
28
32
  rescue StandardError, Timeout::Error => e
29
33
  emit :error, "CometIO push error"
@@ -43,14 +43,18 @@ module Sinatra
43
43
  app.post '/cometio/io' do
44
44
  from = params[:session]
45
45
  halt 400, 'no session' if from.empty?
46
- type = params[:type]
47
- data = params[:data]
46
+ events = params[:events]
47
+ halt 400, 'no data' unless [Hash, Array].include? events.class
48
+ events = events.keys.sort.map{|i| events[i] } if events.kind_of? Hash
48
49
  EM::defer do
49
- CometIO.emit type, data, from unless type.to_s.empty?
50
+ events.each do |e|
51
+ next if !e['type'] or e['type'].empty?
52
+ CometIO.emit e['type'], e['data'], from
53
+ end
50
54
  end
51
55
  stream :keep_open do |s|
52
56
  begin
53
- s.write({:session => from, :type => type, :data => data}.to_json)
57
+ s.write({:session => from, :success => true}.to_json)
54
58
  s.flush
55
59
  s.close
56
60
  rescue
@@ -39,6 +39,7 @@ module Sinatra
39
39
  s[:stream].close
40
40
  s[:queue].push :type => type, :data => data
41
41
  end
42
+ s[:stream] = nil
42
43
  else
43
44
  s[:queue].push :type => type, :data => data
44
45
  end
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
2
  module CometIO
3
- VERSION = '0.4.3'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
@@ -27,6 +27,6 @@ Gem::Specification.new do |gem|
27
27
  gem.add_dependency 'sinatra', '>= 1.3.0'
28
28
  gem.add_dependency 'eventmachine', '>= 1.0.0'
29
29
  gem.add_dependency 'json', '>= 1.7.0'
30
- gem.add_dependency 'event_emitter', '>= 0.2.4'
30
+ gem.add_dependency 'event_emitter', '>= 0.2.5'
31
31
  gem.add_dependency 'httparty', '>= 0.10.2'
32
32
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-cometio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
5
- prerelease:
4
+ version: 0.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Sho Hashimoto
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-26 00:00:00.000000000 Z
11
+ date: 2013-04-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,177 +27,155 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: minitest
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: thin
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: haml
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: sass
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: sinatra-contrib
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: 1.3.2
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: 1.3.2
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: sinatra
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: 1.3.0
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: 1.3.0
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: eventmachine
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: 1.0.0
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: 1.0.0
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: json
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: 1.7.0
166
146
  type: :runtime
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: 1.7.0
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: event_emitter
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - '>='
180
158
  - !ruby/object:Gem::Version
181
- version: 0.2.4
159
+ version: 0.2.5
182
160
  type: :runtime
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - '>='
188
165
  - !ruby/object:Gem::Version
189
- version: 0.2.4
166
+ version: 0.2.5
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: httparty
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
- - - ! '>='
171
+ - - '>='
196
172
  - !ruby/object:Gem::Version
197
173
  version: 0.10.2
198
174
  type: :runtime
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
- - - ! '>='
178
+ - - '>='
204
179
  - !ruby/object:Gem::Version
205
180
  version: 0.10.2
206
181
  description: Comet component for Sinatra RocketIO
@@ -243,33 +218,26 @@ files:
243
218
  - test/test_helper.rb
244
219
  homepage: https://github.com/shokai/sinatra-cometio
245
220
  licenses: []
221
+ metadata: {}
246
222
  post_install_message:
247
223
  rdoc_options: []
248
224
  require_paths:
249
225
  - lib
250
226
  required_ruby_version: !ruby/object:Gem::Requirement
251
- none: false
252
227
  requirements:
253
- - - ! '>='
228
+ - - '>='
254
229
  - !ruby/object:Gem::Version
255
230
  version: '0'
256
- segments:
257
- - 0
258
- hash: 2224878140655385903
259
231
  required_rubygems_version: !ruby/object:Gem::Requirement
260
- none: false
261
232
  requirements:
262
- - - ! '>='
233
+ - - '>='
263
234
  - !ruby/object:Gem::Version
264
235
  version: '0'
265
- segments:
266
- - 0
267
- hash: 2224878140655385903
268
236
  requirements: []
269
237
  rubyforge_project:
270
- rubygems_version: 1.8.24
238
+ rubygems_version: 2.0.3
271
239
  signing_key:
272
- specification_version: 3
240
+ specification_version: 4
273
241
  summary: Comet component for Sinatra RocketIO
274
242
  test_files:
275
243
  - test/app.rb