firehose 0.0.11 → 0.0.12

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.
@@ -15,8 +15,7 @@ class Firehose.LongPoll extends Firehose.Transport
15
15
  # Protocol schema we should use for talking to WS server.
16
16
  @config.longPoll.url ||= "http:#{@config.uri}"
17
17
  # How many ms should we wait before timing out the AJAX connection?
18
- # TODO why was this set at 0s?
19
- @config.longPoll.timeout ||= 0
18
+ @config.longPoll.timeout ||= 20000
20
19
 
21
20
  # TODO - What is @_lagTime for? Can't we just use the @_timeout value?
22
21
  # We use the lag time to make the client live longer than the server.
data/lib/firehose/rack.rb CHANGED
@@ -11,10 +11,12 @@ module Firehose
11
11
  path = req.path
12
12
  method = req.request_method
13
13
  timeout = 30
14
+ cors_origin = env['HTTP_ORIGIN']
14
15
  cors_headers = {
15
- 'Access-Control-Allow-Origin' => env['HTTP_ORIGIN'],
16
+ 'Access-Control-Allow-Origin' => cors_origin,
16
17
  'Access-Control-Allow-Methods' => 'GET',
17
- 'Access-Control-Max-Age' => '1728000'
18
+ 'Access-Control-Max-Age' => '1728000',
19
+ 'Access-Control-Allow-Headers' => 'Content-Type, User-Agent, If-Modified-Since, Cache-Control'
18
20
  }
19
21
 
20
22
  case method
@@ -22,23 +24,26 @@ module Firehose
22
24
  # close down the requeust, and the client then reconnects.
23
25
  when 'GET'
24
26
  EM.next_tick do
27
+ # If the request is a CORS request, return those headers, otherwise don't worry 'bout it
28
+ response_headers = cors_origin ? cors_headers : {}
29
+
25
30
  # Setup a subscription with a client id. We haven't subscribed yet here.
26
31
  subscription = Firehose::Subscription.new(cid)
27
32
 
28
33
  # Setup a timeout timer to tell clients that time out that everything is OK
29
34
  # and they should come back for more
30
- timer = EM.add_timer(timeout) do
35
+ timer = EventMachine::Timer.new(timeout) do
31
36
  # We send a 204 OK to tell the client to reconnect.
32
- env['async.callback'].call [204, cors_headers, []]
37
+ env['async.callback'].call [204, response_headers, []]
33
38
  Firehose.logger.debug "HTTP wait `#{cid}@#{path}` timed out"
34
39
  end
35
40
 
36
41
  # Ok, now subscribe to the subscription.
37
42
  subscription.subscribe path do |message|
43
+ timer.cancel # Turn off the heart beat so we don't execute any of that business.
38
44
  subscription.unsubscribe
39
45
  subscription = nil # Set this to nil so that our heart beat timer doesn't try to double unsub.
40
- EM.cancel_timer timer # Turn off the heart beat so we don't execute any of that business.
41
- env['async.callback'].call [200, cors_headers, [message]]
46
+ env['async.callback'].call [200, response_headers, [message]]
42
47
  Firehose.logger.debug "HTTP sent `#{message}` to `#{cid}@#{path}`"
43
48
  end
44
49
  Firehose.logger.debug "HTTP subscribed to `#{cid}@#{path}`"
@@ -1,4 +1,4 @@
1
1
  module Firehose
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
3
3
  CODENAME = "Shouty Shamous"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firehose
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2012-04-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: eventmachine
17
- requirement: &70308648263700 !ruby/object:Gem::Requirement
17
+ requirement: &70182613622860 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.0.0.beta
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70308648263700
25
+ version_requirements: *70182613622860
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: amqp
28
- requirement: &70308648262880 !ruby/object:Gem::Requirement
28
+ requirement: &70182613621920 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.9.4
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70308648262880
36
+ version_requirements: *70182613621920
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: thin
39
- requirement: &70308648261900 !ruby/object:Gem::Requirement
39
+ requirement: &70182613620960 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70308648261900
47
+ version_requirements: *70182613620960
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: thor
50
- requirement: &70308648260860 !ruby/object:Gem::Requirement
50
+ requirement: &70182613619960 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *70308648260860
58
+ version_requirements: *70182613619960
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: websocket-rack
61
- requirement: &70308648260100 !ruby/object:Gem::Requirement
61
+ requirement: &70182613619120 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *70308648260100
69
+ version_requirements: *70182613619120
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: faraday
72
- requirement: &70308648258940 !ruby/object:Gem::Requirement
72
+ requirement: &70182613617780 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *70308648258940
80
+ version_requirements: *70182613617780
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rspec
83
- requirement: &70308648258020 !ruby/object:Gem::Requirement
83
+ requirement: &70182613617160 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70308648258020
91
+ version_requirements: *70182613617160
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rack-test
94
- requirement: &70308648257080 !ruby/object:Gem::Requirement
94
+ requirement: &70182613615900 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70308648257080
102
+ version_requirements: *70182613615900
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: guard-rspec
105
- requirement: &70308648271320 !ruby/object:Gem::Requirement
105
+ requirement: &70182613629800 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *70308648271320
113
+ version_requirements: *70182613629800
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: guard-bundler
116
- requirement: &70308648267980 !ruby/object:Gem::Requirement
116
+ requirement: &70182613627180 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: '0'
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *70308648267980
124
+ version_requirements: *70182613627180
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: em-http-request
127
- requirement: &70308648266640 !ruby/object:Gem::Requirement
127
+ requirement: &70182613625900 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: 0.3.0
133
133
  type: :development
134
134
  prerelease: false
135
- version_requirements: *70308648266640
135
+ version_requirements: *70182613625900
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: guard-coffeescript
138
- requirement: &70308648265120 !ruby/object:Gem::Requirement
138
+ requirement: &70182613624400 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ! '>='
@@ -143,7 +143,7 @@ dependencies:
143
143
  version: '0'
144
144
  type: :development
145
145
  prerelease: false
146
- version_requirements: *70308648265120
146
+ version_requirements: *70182613624400
147
147
  description: Firehose is a realtime web application toolkit for building realtime
148
148
  Ruby web applications.
149
149
  email: