firehose 1.2.3 → 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +2 -28
- data/lib/assets/javascripts/firehose/web_socket.js.coffee +11 -8
- data/lib/firehose/rack/ping.rb +2 -0
- data/lib/firehose/version.rb +2 -2
- data/spec/integrations/shared_examples.rb +3 -1
- metadata +45 -5
- checksums.yaml +0 -15
data/README.md
CHANGED
@@ -70,8 +70,6 @@ Firehose doesn't just stop at curl; it has a full-featured JavaScript client tha
|
|
70
70
|
Still have the server running? Copy and paste the code below into Firebug or the WebKit console.
|
71
71
|
|
72
72
|
```javascript
|
73
|
-
// You'll need to set for WS to work in IE. The value here is the default.
|
74
|
-
window.WEB_SOCKET_SWF_LOCATION = '/assets/firehose/WebSocketMain.swf';
|
75
73
|
|
76
74
|
new Firehose.Consumer({
|
77
75
|
message: function(msg){
|
@@ -134,15 +132,7 @@ my_sprockets_env = Sprockets::Environment.new
|
|
134
132
|
Firehose::Assets::Sprockets.configure my_sprockets_env
|
135
133
|
```
|
136
134
|
|
137
|
-
3.
|
138
|
-
|
139
|
-
```erb
|
140
|
-
window.WEB_SOCKET_SWF_LOCATION = '<%= asset_path('firehose/WebSocketMain.swf') %>'
|
141
|
-
```
|
142
|
-
|
143
|
-
The options you can set in this file come directly from https://github.com/gimite/web-socket-js (which is the flash web socket implementation used by Firehose).
|
144
|
-
|
145
|
-
4) Require your config file and the firehose gem. This would look something like this:
|
135
|
+
3. Require your config file and the firehose gem. This would look something like this:
|
146
136
|
|
147
137
|
```ruby
|
148
138
|
#= require some/other/js/file
|
@@ -172,22 +162,6 @@ if exceptional_key = ENV['EXCEPTIONAL_KEY']
|
|
172
162
|
end
|
173
163
|
```
|
174
164
|
|
175
|
-
# Flash Policy File
|
176
|
-
|
177
|
-
This works out of the box in development if you use the included Procfile with Foreman. However, that solution doesn't work well with a lot production setups, so it is disabled in other environments.
|
178
|
-
|
179
|
-
[Here is a hack to server your policy file via Nginx](http://blog.vokle.com/index.php/2009/06/10/dealing-with-adobe-and-serving-socket-policy-servers-via-nginx-and-10-lines-of-code/)
|
180
|
-
|
181
|
-
You can also add a similar hack to HAProxy to serve your policy file.
|
182
|
-
|
183
|
-
```sh
|
184
|
-
listen swf_policy_requests 0.0.0.0:843
|
185
|
-
# Be careful here. This needs to be an absolute path.
|
186
|
-
errorfile 400 /path/to/my/crossdomain.xml
|
187
|
-
```
|
188
|
-
|
189
|
-
In either case, you'll want to be careful about using these hacks on ports that you are also using for genuine HTTP traffic.
|
190
|
-
|
191
165
|
# Deployment
|
192
166
|
|
193
167
|
The recommended method of deploying firehose is to deploy it separately from your main app.
|
@@ -206,4 +180,4 @@ Of course, you could use `exceptional` instead of `airbrake` and `thin` instead
|
|
206
180
|
|
207
181
|
2. Set up `config/deploy.rb` to your liking. You can follow most directions for using Capistrano and Foreman to deploy Rack apps, such as https://gist.github.com/1027117
|
208
182
|
|
209
|
-
3. Set up `config/rainbows.rb` (if you are using Rainbows!). The gem includes an example to get you started.
|
183
|
+
3. Set up `config/rainbows.rb` (if you are using Rainbows!). The gem includes an example to get you started.
|
@@ -4,10 +4,8 @@ KEEPALIVE_PING_TIMEOUT = 20000
|
|
4
4
|
class Firehose.WebSocket extends Firehose.Transport
|
5
5
|
name: -> 'WebSocket'
|
6
6
|
|
7
|
+
# Check if WebSocket is an object in the window.
|
7
8
|
@supported: ->
|
8
|
-
# Compatibility reference: http://caniuse.com/websockets
|
9
|
-
# We don't need to explicitly check for Flash web socket or MozWebSocket
|
10
|
-
# because web_socket.js has already handled that.
|
11
9
|
window.WebSocket?
|
12
10
|
|
13
11
|
constructor: (args) ->
|
@@ -17,11 +15,16 @@ class Firehose.WebSocket extends Firehose.Transport
|
|
17
15
|
@config.webSocket.connectionVerified = @config.connectionVerified
|
18
16
|
|
19
17
|
_request: =>
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
# Run this is a try/catch block because IE10 inside of a .NET control
|
19
|
+
# complains about security zones.
|
20
|
+
try
|
21
|
+
@socket = new window.WebSocket "ws:#{@config.uri}?#{$.param @config.params}"
|
22
|
+
@socket.onopen = @_open
|
23
|
+
@socket.onclose = @_close
|
24
|
+
@socket.onerror = @_error
|
25
|
+
@socket.onmessage = @_lookForInitialPong
|
26
|
+
catch err
|
27
|
+
console?.log(err)
|
25
28
|
|
26
29
|
_open: =>
|
27
30
|
sendPing @socket
|
data/lib/firehose/rack/ping.rb
CHANGED
data/lib/firehose/version.rb
CHANGED
@@ -82,7 +82,9 @@ shared_examples_for 'Firehose::Rack::App' do
|
|
82
82
|
ws = nil
|
83
83
|
end
|
84
84
|
|
85
|
-
ws.onerror
|
85
|
+
ws.onerror = lambda do |event|
|
86
|
+
raise 'ws failed' + "\n" + event.inspect
|
87
|
+
end
|
86
88
|
end
|
87
89
|
|
88
90
|
# Great, we have all the pieces in order, lets run this thing in the reactor.
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firehose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Brad Gessler
|
@@ -11,11 +12,12 @@ authors:
|
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date: 2013-
|
15
|
+
date: 2013-05-24 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: eventmachine
|
18
19
|
requirement: !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
19
21
|
requirements:
|
20
22
|
- - ! '>='
|
21
23
|
- !ruby/object:Gem::Version
|
@@ -23,6 +25,7 @@ dependencies:
|
|
23
25
|
type: :runtime
|
24
26
|
prerelease: false
|
25
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
26
29
|
requirements:
|
27
30
|
- - ! '>='
|
28
31
|
- !ruby/object:Gem::Version
|
@@ -30,6 +33,7 @@ dependencies:
|
|
30
33
|
- !ruby/object:Gem::Dependency
|
31
34
|
name: em-hiredis
|
32
35
|
requirement: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
33
37
|
requirements:
|
34
38
|
- - ! '>='
|
35
39
|
- !ruby/object:Gem::Version
|
@@ -37,6 +41,7 @@ dependencies:
|
|
37
41
|
type: :runtime
|
38
42
|
prerelease: false
|
39
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
40
45
|
requirements:
|
41
46
|
- - ! '>='
|
42
47
|
- !ruby/object:Gem::Version
|
@@ -44,6 +49,7 @@ dependencies:
|
|
44
49
|
- !ruby/object:Gem::Dependency
|
45
50
|
name: thor
|
46
51
|
requirement: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
47
53
|
requirements:
|
48
54
|
- - ! '>='
|
49
55
|
- !ruby/object:Gem::Version
|
@@ -51,6 +57,7 @@ dependencies:
|
|
51
57
|
type: :runtime
|
52
58
|
prerelease: false
|
53
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
54
61
|
requirements:
|
55
62
|
- - ! '>='
|
56
63
|
- !ruby/object:Gem::Version
|
@@ -58,6 +65,7 @@ dependencies:
|
|
58
65
|
- !ruby/object:Gem::Dependency
|
59
66
|
name: faraday
|
60
67
|
requirement: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
61
69
|
requirements:
|
62
70
|
- - ! '>='
|
63
71
|
- !ruby/object:Gem::Version
|
@@ -65,6 +73,7 @@ dependencies:
|
|
65
73
|
type: :runtime
|
66
74
|
prerelease: false
|
67
75
|
version_requirements: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
68
77
|
requirements:
|
69
78
|
- - ! '>='
|
70
79
|
- !ruby/object:Gem::Version
|
@@ -72,6 +81,7 @@ dependencies:
|
|
72
81
|
- !ruby/object:Gem::Dependency
|
73
82
|
name: faye-websocket
|
74
83
|
requirement: !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
75
85
|
requirements:
|
76
86
|
- - ! '>='
|
77
87
|
- !ruby/object:Gem::Version
|
@@ -79,6 +89,7 @@ dependencies:
|
|
79
89
|
type: :runtime
|
80
90
|
prerelease: false
|
81
91
|
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
82
93
|
requirements:
|
83
94
|
- - ! '>='
|
84
95
|
- !ruby/object:Gem::Version
|
@@ -86,6 +97,7 @@ dependencies:
|
|
86
97
|
- !ruby/object:Gem::Dependency
|
87
98
|
name: em-http-request
|
88
99
|
requirement: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
89
101
|
requirements:
|
90
102
|
- - ! '>='
|
91
103
|
- !ruby/object:Gem::Version
|
@@ -93,6 +105,7 @@ dependencies:
|
|
93
105
|
type: :runtime
|
94
106
|
prerelease: false
|
95
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
96
109
|
requirements:
|
97
110
|
- - ! '>='
|
98
111
|
- !ruby/object:Gem::Version
|
@@ -100,6 +113,7 @@ dependencies:
|
|
100
113
|
- !ruby/object:Gem::Dependency
|
101
114
|
name: json
|
102
115
|
requirement: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
103
117
|
requirements:
|
104
118
|
- - ! '>='
|
105
119
|
- !ruby/object:Gem::Version
|
@@ -107,6 +121,7 @@ dependencies:
|
|
107
121
|
type: :runtime
|
108
122
|
prerelease: false
|
109
123
|
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
110
125
|
requirements:
|
111
126
|
- - ! '>='
|
112
127
|
- !ruby/object:Gem::Version
|
@@ -114,6 +129,7 @@ dependencies:
|
|
114
129
|
- !ruby/object:Gem::Dependency
|
115
130
|
name: rspec
|
116
131
|
requirement: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
117
133
|
requirements:
|
118
134
|
- - ! '>='
|
119
135
|
- !ruby/object:Gem::Version
|
@@ -121,6 +137,7 @@ dependencies:
|
|
121
137
|
type: :development
|
122
138
|
prerelease: false
|
123
139
|
version_requirements: !ruby/object:Gem::Requirement
|
140
|
+
none: false
|
124
141
|
requirements:
|
125
142
|
- - ! '>='
|
126
143
|
- !ruby/object:Gem::Version
|
@@ -128,6 +145,7 @@ dependencies:
|
|
128
145
|
- !ruby/object:Gem::Dependency
|
129
146
|
name: webmock
|
130
147
|
requirement: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
131
149
|
requirements:
|
132
150
|
- - ! '>='
|
133
151
|
- !ruby/object:Gem::Version
|
@@ -135,6 +153,7 @@ dependencies:
|
|
135
153
|
type: :development
|
136
154
|
prerelease: false
|
137
155
|
version_requirements: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
138
157
|
requirements:
|
139
158
|
- - ! '>='
|
140
159
|
- !ruby/object:Gem::Version
|
@@ -142,6 +161,7 @@ dependencies:
|
|
142
161
|
- !ruby/object:Gem::Dependency
|
143
162
|
name: guard-rspec
|
144
163
|
requirement: !ruby/object:Gem::Requirement
|
164
|
+
none: false
|
145
165
|
requirements:
|
146
166
|
- - ! '>='
|
147
167
|
- !ruby/object:Gem::Version
|
@@ -149,6 +169,7 @@ dependencies:
|
|
149
169
|
type: :development
|
150
170
|
prerelease: false
|
151
171
|
version_requirements: !ruby/object:Gem::Requirement
|
172
|
+
none: false
|
152
173
|
requirements:
|
153
174
|
- - ! '>='
|
154
175
|
- !ruby/object:Gem::Version
|
@@ -156,6 +177,7 @@ dependencies:
|
|
156
177
|
- !ruby/object:Gem::Dependency
|
157
178
|
name: guard-bundler
|
158
179
|
requirement: !ruby/object:Gem::Requirement
|
180
|
+
none: false
|
159
181
|
requirements:
|
160
182
|
- - ! '>='
|
161
183
|
- !ruby/object:Gem::Version
|
@@ -163,6 +185,7 @@ dependencies:
|
|
163
185
|
type: :development
|
164
186
|
prerelease: false
|
165
187
|
version_requirements: !ruby/object:Gem::Requirement
|
188
|
+
none: false
|
166
189
|
requirements:
|
167
190
|
- - ! '>='
|
168
191
|
- !ruby/object:Gem::Version
|
@@ -170,6 +193,7 @@ dependencies:
|
|
170
193
|
- !ruby/object:Gem::Dependency
|
171
194
|
name: guard-coffeescript
|
172
195
|
requirement: !ruby/object:Gem::Requirement
|
196
|
+
none: false
|
173
197
|
requirements:
|
174
198
|
- - ! '>='
|
175
199
|
- !ruby/object:Gem::Version
|
@@ -177,6 +201,7 @@ dependencies:
|
|
177
201
|
type: :development
|
178
202
|
prerelease: false
|
179
203
|
version_requirements: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
180
205
|
requirements:
|
181
206
|
- - ! '>='
|
182
207
|
- !ruby/object:Gem::Version
|
@@ -184,6 +209,7 @@ dependencies:
|
|
184
209
|
- !ruby/object:Gem::Dependency
|
185
210
|
name: rainbows
|
186
211
|
requirement: !ruby/object:Gem::Requirement
|
212
|
+
none: false
|
187
213
|
requirements:
|
188
214
|
- - ~>
|
189
215
|
- !ruby/object:Gem::Version
|
@@ -191,6 +217,7 @@ dependencies:
|
|
191
217
|
type: :development
|
192
218
|
prerelease: false
|
193
219
|
version_requirements: !ruby/object:Gem::Requirement
|
220
|
+
none: false
|
194
221
|
requirements:
|
195
222
|
- - ~>
|
196
223
|
- !ruby/object:Gem::Version
|
@@ -198,6 +225,7 @@ dependencies:
|
|
198
225
|
- !ruby/object:Gem::Dependency
|
199
226
|
name: thin
|
200
227
|
requirement: !ruby/object:Gem::Requirement
|
228
|
+
none: false
|
201
229
|
requirements:
|
202
230
|
- - ! '>='
|
203
231
|
- !ruby/object:Gem::Version
|
@@ -205,6 +233,7 @@ dependencies:
|
|
205
233
|
type: :development
|
206
234
|
prerelease: false
|
207
235
|
version_requirements: !ruby/object:Gem::Requirement
|
236
|
+
none: false
|
208
237
|
requirements:
|
209
238
|
- - ! '>='
|
210
239
|
- !ruby/object:Gem::Version
|
@@ -212,6 +241,7 @@ dependencies:
|
|
212
241
|
- !ruby/object:Gem::Dependency
|
213
242
|
name: rack-test
|
214
243
|
requirement: !ruby/object:Gem::Requirement
|
244
|
+
none: false
|
215
245
|
requirements:
|
216
246
|
- - ! '>='
|
217
247
|
- !ruby/object:Gem::Version
|
@@ -219,6 +249,7 @@ dependencies:
|
|
219
249
|
type: :development
|
220
250
|
prerelease: false
|
221
251
|
version_requirements: !ruby/object:Gem::Requirement
|
252
|
+
none: false
|
222
253
|
requirements:
|
223
254
|
- - ! '>='
|
224
255
|
- !ruby/object:Gem::Version
|
@@ -226,6 +257,7 @@ dependencies:
|
|
226
257
|
- !ruby/object:Gem::Dependency
|
227
258
|
name: async_rack_test
|
228
259
|
requirement: !ruby/object:Gem::Requirement
|
260
|
+
none: false
|
229
261
|
requirements:
|
230
262
|
- - ! '>='
|
231
263
|
- !ruby/object:Gem::Version
|
@@ -233,6 +265,7 @@ dependencies:
|
|
233
265
|
type: :development
|
234
266
|
prerelease: false
|
235
267
|
version_requirements: !ruby/object:Gem::Requirement
|
268
|
+
none: false
|
236
269
|
requirements:
|
237
270
|
- - ! '>='
|
238
271
|
- !ruby/object:Gem::Version
|
@@ -240,6 +273,7 @@ dependencies:
|
|
240
273
|
- !ruby/object:Gem::Dependency
|
241
274
|
name: foreman
|
242
275
|
requirement: !ruby/object:Gem::Requirement
|
276
|
+
none: false
|
243
277
|
requirements:
|
244
278
|
- - ! '>='
|
245
279
|
- !ruby/object:Gem::Version
|
@@ -247,6 +281,7 @@ dependencies:
|
|
247
281
|
type: :development
|
248
282
|
prerelease: false
|
249
283
|
version_requirements: !ruby/object:Gem::Requirement
|
284
|
+
none: false
|
250
285
|
requirements:
|
251
286
|
- - ! '>='
|
252
287
|
- !ruby/object:Gem::Version
|
@@ -254,6 +289,7 @@ dependencies:
|
|
254
289
|
- !ruby/object:Gem::Dependency
|
255
290
|
name: sprockets
|
256
291
|
requirement: !ruby/object:Gem::Requirement
|
292
|
+
none: false
|
257
293
|
requirements:
|
258
294
|
- - ! '>='
|
259
295
|
- !ruby/object:Gem::Version
|
@@ -261,6 +297,7 @@ dependencies:
|
|
261
297
|
type: :development
|
262
298
|
prerelease: false
|
263
299
|
version_requirements: !ruby/object:Gem::Requirement
|
300
|
+
none: false
|
264
301
|
requirements:
|
265
302
|
- - ! '>='
|
266
303
|
- !ruby/object:Gem::Version
|
@@ -268,6 +305,7 @@ dependencies:
|
|
268
305
|
- !ruby/object:Gem::Dependency
|
269
306
|
name: rake
|
270
307
|
requirement: !ruby/object:Gem::Requirement
|
308
|
+
none: false
|
271
309
|
requirements:
|
272
310
|
- - ! '>='
|
273
311
|
- !ruby/object:Gem::Version
|
@@ -275,6 +313,7 @@ dependencies:
|
|
275
313
|
type: :development
|
276
314
|
prerelease: false
|
277
315
|
version_requirements: !ruby/object:Gem::Requirement
|
316
|
+
none: false
|
278
317
|
requirements:
|
279
318
|
- - ! '>='
|
280
319
|
- !ruby/object:Gem::Version
|
@@ -352,26 +391,27 @@ files:
|
|
352
391
|
- spec/spec_helper.rb
|
353
392
|
homepage: http://firehose.io/
|
354
393
|
licenses: []
|
355
|
-
metadata: {}
|
356
394
|
post_install_message:
|
357
395
|
rdoc_options: []
|
358
396
|
require_paths:
|
359
397
|
- lib
|
360
398
|
required_ruby_version: !ruby/object:Gem::Requirement
|
399
|
+
none: false
|
361
400
|
requirements:
|
362
401
|
- - ! '>='
|
363
402
|
- !ruby/object:Gem::Version
|
364
403
|
version: '0'
|
365
404
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
405
|
+
none: false
|
366
406
|
requirements:
|
367
407
|
- - ! '>='
|
368
408
|
- !ruby/object:Gem::Version
|
369
409
|
version: '0'
|
370
410
|
requirements: []
|
371
411
|
rubyforge_project: firehose
|
372
|
-
rubygems_version:
|
412
|
+
rubygems_version: 1.8.23
|
373
413
|
signing_key:
|
374
|
-
specification_version:
|
414
|
+
specification_version: 3
|
375
415
|
summary: Build realtime Ruby web applications
|
376
416
|
test_files:
|
377
417
|
- spec/integrations/integration_test_helper.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
YWRhZjRhMzQ1ZGUxYjA1YmFlMmViN2RkNmIyOGNlNWZhNjZhMTY5NA==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YTFiNjQ2MzcxMTBkMjc4OWJjMzRjYTViM2JkYjI2N2RhYzNhNWZlNQ==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YTFiOTdiMDU4Yjc5NTZiMThhN2M5ZTZhMjc4ZTdiMmNkOTg3NzRmN2QxYmEx
|
10
|
-
NTkxOTEyOGJhZWZjMGU5YzAyYmNlZDY2ZGEzYjVhN2I2NTllMWQ3MjBhZWYx
|
11
|
-
OTVhZWJiNTExNDFlN2Y3MGM2YWQxZTUwMGRiN2QxYzViMmQ4MGQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
OTA4Njk1MWUyMDE1ZTA4M2NiZmZiMzEzNTAwOGMyMzg2NGY1NTgyZTBlYmY0
|
14
|
-
ZGEwZDZjZjViMjM4NDgxMzIxNjE5YjRiNjQ4MTMwMDYyMTdjYzNlNjJjMmZi
|
15
|
-
YjcxMDYyZGZhOThiZWRhOGU5Njk5YzEyODI2NWQ0Y2EzY2I4N2M=
|