faye 0.8.11 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of faye might be problematic. Click here for more details.

Files changed (73) hide show
  1. data/{History.txt → CHANGELOG.md} +126 -105
  2. data/README.md +36 -0
  3. data/lib/faye-browser-min.js +2 -1
  4. data/lib/faye-browser-min.js.map +1 -8
  5. data/lib/faye-browser.js +923 -607
  6. data/lib/faye.rb +11 -5
  7. data/lib/faye/adapters/rack_adapter.rb +80 -85
  8. data/lib/faye/engines/connection.rb +7 -9
  9. data/lib/faye/engines/memory.rb +1 -0
  10. data/lib/faye/engines/proxy.rb +7 -6
  11. data/lib/faye/mixins/deferrable.rb +15 -0
  12. data/lib/faye/mixins/logging.rb +11 -22
  13. data/lib/faye/mixins/publisher.rb +9 -20
  14. data/lib/faye/protocol/channel.rb +2 -1
  15. data/lib/faye/protocol/client.rb +70 -48
  16. data/lib/faye/protocol/envelope.rb +24 -0
  17. data/lib/faye/protocol/extensible.rb +7 -4
  18. data/lib/faye/protocol/publication.rb +1 -1
  19. data/lib/faye/protocol/server.rb +8 -11
  20. data/lib/faye/protocol/socket.rb +6 -4
  21. data/lib/faye/protocol/subscription.rb +1 -1
  22. data/lib/faye/transport/http.rb +20 -27
  23. data/lib/faye/transport/local.rb +5 -5
  24. data/lib/faye/transport/transport.rb +42 -12
  25. data/lib/faye/transport/web_socket.rb +71 -38
  26. metadata +169 -137
  27. checksums.yaml +0 -7
  28. data/README.rdoc +0 -83
  29. data/spec/browser.html +0 -45
  30. data/spec/encoding_helper.rb +0 -7
  31. data/spec/install.sh +0 -78
  32. data/spec/javascript/channel_spec.js +0 -15
  33. data/spec/javascript/client_spec.js +0 -729
  34. data/spec/javascript/dispatcher_spec.js +0 -122
  35. data/spec/javascript/engine/memory_spec.js +0 -7
  36. data/spec/javascript/engine_spec.js +0 -417
  37. data/spec/javascript/faye_spec.js +0 -34
  38. data/spec/javascript/grammar_spec.js +0 -66
  39. data/spec/javascript/node_adapter_spec.js +0 -314
  40. data/spec/javascript/publisher_spec.js +0 -27
  41. data/spec/javascript/server/connect_spec.js +0 -168
  42. data/spec/javascript/server/disconnect_spec.js +0 -121
  43. data/spec/javascript/server/extensions_spec.js +0 -60
  44. data/spec/javascript/server/handshake_spec.js +0 -145
  45. data/spec/javascript/server/integration_spec.js +0 -131
  46. data/spec/javascript/server/publish_spec.js +0 -85
  47. data/spec/javascript/server/subscribe_spec.js +0 -247
  48. data/spec/javascript/server/unsubscribe_spec.js +0 -245
  49. data/spec/javascript/server_spec.js +0 -121
  50. data/spec/javascript/transport_spec.js +0 -135
  51. data/spec/node.js +0 -55
  52. data/spec/phantom.js +0 -17
  53. data/spec/ruby/channel_spec.rb +0 -17
  54. data/spec/ruby/client_spec.rb +0 -741
  55. data/spec/ruby/engine/memory_spec.rb +0 -7
  56. data/spec/ruby/engine_examples.rb +0 -427
  57. data/spec/ruby/faye_spec.rb +0 -30
  58. data/spec/ruby/grammar_spec.rb +0 -68
  59. data/spec/ruby/publisher_spec.rb +0 -27
  60. data/spec/ruby/rack_adapter_spec.rb +0 -241
  61. data/spec/ruby/server/connect_spec.rb +0 -170
  62. data/spec/ruby/server/disconnect_spec.rb +0 -120
  63. data/spec/ruby/server/extensions_spec.rb +0 -68
  64. data/spec/ruby/server/handshake_spec.rb +0 -143
  65. data/spec/ruby/server/integration_spec.rb +0 -133
  66. data/spec/ruby/server/publish_spec.rb +0 -81
  67. data/spec/ruby/server/subscribe_spec.rb +0 -247
  68. data/spec/ruby/server/unsubscribe_spec.rb +0 -247
  69. data/spec/ruby/server_spec.rb +0 -121
  70. data/spec/ruby/transport_spec.rb +0 -136
  71. data/spec/spec_helper.rb +0 -11
  72. data/spec/testswarm +0 -42
  73. data/spec/thin_proxy.rb +0 -37
@@ -2,17 +2,17 @@ module Faye
2
2
 
3
3
  class Transport::Local < Transport
4
4
  def self.usable?(client, endpoint, &callback)
5
- callback.call(endpoint.is_a?(Server))
5
+ callback.call(Server === endpoint)
6
6
  end
7
7
 
8
8
  def batching?
9
9
  false
10
10
  end
11
11
 
12
- def request(message, timeout)
13
- message = Faye.copy_object(message)
14
- @endpoint.process(message, true) do |responses|
15
- receive(Faye.copy_object(responses))
12
+ def request(envelopes)
13
+ messages = Faye.copy_object(envelopes.map { |e| e.message })
14
+ @endpoint.process(messages, nil) do |responses|
15
+ receive(envelopes, Faye.copy_object(responses))
16
16
  end
17
17
  end
18
18
  end
@@ -5,9 +5,10 @@ module Faye
5
5
  include Publisher
6
6
  include Timeouts
7
7
 
8
- attr_accessor :cookies, :endpoint, :headers
8
+ attr_reader :endpoint
9
9
 
10
10
  def initialize(client, endpoint)
11
+ super()
11
12
  @client = client
12
13
  @endpoint = endpoint
13
14
  @outbox = []
@@ -20,17 +21,22 @@ module Faye
20
21
  def close
21
22
  end
22
23
 
24
+ def encode(envelopes)
25
+ ''
26
+ end
27
+
23
28
  def connection_type
24
29
  self.class.connection_type
25
30
  end
26
31
 
27
- def send(message, timeout)
28
- debug('Client ? sending message to ?: ?', @client.client_id, @endpoint, message)
32
+ def send(envelope)
33
+ message = envelope.message
34
+ client_id = @client.instance_eval { @client_id }
35
+ debug('Client ? sending message to ?: ?', client_id, @endpoint, message)
29
36
 
30
- return request([message], timeout) unless batching?
37
+ return request([envelope]) unless batching?
31
38
 
32
- @outbox << message
33
- @timeout = timeout
39
+ @outbox << envelope
34
40
 
35
41
  if message['channel'] == Channel::HANDSHAKE
36
42
  return add_timeout(:publish, 0.01) { flush }
@@ -40,6 +46,7 @@ module Faye
40
46
  @connection_message = message
41
47
  end
42
48
 
49
+ flush_large_batch
43
50
  add_timeout(:publish, Engine::MAX_DELAY) { flush }
44
51
  end
45
52
 
@@ -50,20 +57,43 @@ module Faye
50
57
  @connection_message['advice'] = {'timeout' => 0}
51
58
  end
52
59
 
53
- request(@outbox, @timeout)
60
+ request(@outbox)
54
61
 
55
62
  @connection_message = nil
56
63
  @outbox = []
57
64
  end
58
65
 
59
- def receive(responses)
60
- debug('Client ? received from ?: ?', @client.client_id, @endpoint, responses)
66
+ def flush_large_batch
67
+ string = encode(@outbox)
68
+ return if string.size < @client.max_request_size
69
+ last = @outbox.pop
70
+ flush(@outbox)
71
+ @outbox.push(last) if last
72
+ end
73
+
74
+ def receive(envelopes, responses)
75
+ envelopes.each { |e| e.set_deferred_status(:succeeded) }
76
+ responses = [responses].flatten
77
+ client_id = @client.instance_eval { @client_id }
78
+ debug('Client ? received from ?: ?', client_id, @endpoint, responses)
61
79
  responses.each { |response| @client.receive_message(response) }
62
80
  end
63
81
 
64
- def retry_block(message, timeout)
65
- lambda do
66
- EventMachine.add_timer(@client.retry) { request(message, timeout) }
82
+ def handle_error(envelopes, immediate = false)
83
+ envelopes.each { |e| e.set_deferred_status(:failed, immediate) }
84
+ end
85
+
86
+ private
87
+
88
+ def get_cookies
89
+ return @client.cookies
90
+ @client.cookies.get_cookies(@endpoint.to_s) * ';'
91
+ end
92
+
93
+ def store_cookies(set_cookie)
94
+ return @client.cookies
95
+ [*set_cookie].compact.each do |cookie|
96
+ @client.cookies.set_cookie(@endpoint.to_s, cookie)
67
97
  end
68
98
  end
69
99
 
@@ -5,7 +5,12 @@ module Faye
5
5
  CONNECTING = 2
6
6
  CONNECTED = 3
7
7
 
8
- include EventMachine::Deferrable
8
+ PROTOCOLS = {
9
+ 'http' => 'ws',
10
+ 'https' => 'wss'
11
+ }
12
+
13
+ include Deferrable
9
14
 
10
15
  def self.usable?(client, endpoint, &callback)
11
16
  create(client, endpoint).usable?(&callback)
@@ -13,7 +18,7 @@ module Faye
13
18
 
14
19
  def self.create(client, endpoint)
15
20
  sockets = client.transports[:websocket] ||= {}
16
- sockets[endpoint] ||= new(client, endpoint)
21
+ sockets[endpoint.to_s] ||= new(client, endpoint)
17
22
  end
18
23
 
19
24
  def batching?
@@ -26,64 +31,92 @@ module Faye
26
31
  connect
27
32
  end
28
33
 
29
- def request(messages, timeout = nil)
30
- return if messages.empty?
31
- @messages ||= {}
32
- messages.each { |message| @messages[message['id']] = message }
33
- callback { |socket| socket.send(Faye.to_json(messages)) }
34
+ def request(envelopes)
35
+ callback do |socket|
36
+ next unless socket
37
+ envelopes.each { |envelope| @pending.add(envelope) }
38
+ messages = envelopes.map { |e| e.message }
39
+ socket.send(Faye.to_json(messages))
40
+ end
34
41
  connect
35
42
  end
36
43
 
37
- def close
38
- return unless @socket
39
- @socket.onclose = @socket.onerror = nil
40
- @socket.close
41
- @socket = nil
42
- set_deferred_status(:deferred)
43
- @state = UNCONNECTED
44
- end
45
-
46
44
  def connect
47
45
  @state ||= UNCONNECTED
48
46
  return unless @state == UNCONNECTED
49
-
50
47
  @state = CONNECTING
51
48
 
52
- @socket = Faye::WebSocket::Client.new(@endpoint.gsub(/^http(s?):/, 'ws\1:'))
49
+ headers = @client.headers.dup
50
+ headers['Cookie'] = get_cookies
51
+
52
+ url = @endpoint.dup
53
+ url.scheme = PROTOCOLS[url.scheme]
54
+ socket = Faye::WebSocket::Client.new(url.to_s, [], :headers => headers)
53
55
 
54
- @socket.onopen = lambda do |*args|
56
+ socket.onopen = lambda do |*args|
57
+ store_cookies(socket.headers['Set-Cookie'])
58
+ @socket = socket
59
+ @pending = Set.new
55
60
  @state = CONNECTED
56
61
  @ever_connected = true
57
- set_deferred_status(:succeeded, @socket)
58
- trigger(:up)
62
+ ping
63
+ set_deferred_status(:succeeded, socket)
59
64
  end
60
65
 
61
- @socket.onmessage = lambda do |event|
62
- messages = Yajl::Parser.parse(event.data)
63
- next if messages.nil?
64
- messages = [messages].flatten
65
- messages.each { |message| @messages.delete(message['id']) }
66
- receive(messages)
67
- end
66
+ closed = false
67
+ socket.onclose = socket.onerror = lambda do |*args|
68
+ return if closed
69
+ closed = true
68
70
 
69
- @socket.onclose = @socket.onerror = lambda do |*args|
70
71
  was_connected = (@state == CONNECTED)
71
- set_deferred_status(:deferred)
72
+ socket.onopen = socket.onclose = socket.onerror = socket.onmessage = nil
73
+
74
+ @socket = nil
72
75
  @state = UNCONNECTED
76
+ remove_timeout(:ping)
77
+ set_deferred_status(:unknown)
78
+
79
+ pending = @pending ? @pending.to_a : []
80
+ @pending = nil
81
+
82
+ if was_connected
83
+ handle_error(pending, true)
84
+ elsif @ever_connected
85
+ handle_error(pending)
86
+ else
87
+ set_deferred_status(:failed)
88
+ end
89
+ end
73
90
 
74
- close
91
+ socket.onmessage = lambda do |event|
92
+ messages = MultiJson.load(event.data)
93
+ envelopes = []
75
94
 
76
- next resend if was_connected
77
- next set_deferred_status(:failed) unless @ever_connected
95
+ next if messages.nil?
96
+ messages = [messages].flatten
78
97
 
79
- EventMachine.add_timer(@client.retry) { connect }
80
- trigger(:down)
98
+ messages.each do |message|
99
+ next unless message.has_key?('successful')
100
+ next unless envelope = @pending.find { |e| e.id == message['id'] }
101
+ @pending.delete(envelope)
102
+ envelopes << envelope
103
+ end
104
+ receive(envelopes, messages)
81
105
  end
82
106
  end
83
107
 
84
- def resend
85
- return unless @messages
86
- request(@messages.values)
108
+ def close
109
+ return unless @socket
110
+ @socket.close
111
+ end
112
+
113
+ private
114
+
115
+ def ping
116
+ return unless @socket
117
+ @socket.send('[]')
118
+ timeout = @client.instance_eval { @advice['timeout'] }
119
+ add_timeout(:ping, timeout/2000.0) { ping }
87
120
  end
88
121
  end
89
122
 
metadata CHANGED
@@ -1,384 +1,416 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faye
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.11
4
+ version: 1.0.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - James Coglan
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-07-08 00:00:00.000000000 Z
12
+ date: 2013-10-01 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: cookiejar
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - ">="
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: 0.3.0
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - ">="
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: 0.3.0
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: em-http-request
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ">="
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: 0.3.0
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ">="
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: 0.3.0
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: eventmachine
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - ">="
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: 0.12.0
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - ">="
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: 0.12.0
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: faye-websocket
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - ">="
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
- version: 0.4.0
69
+ version: 0.7.0
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - ">="
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
- version: 0.4.0
77
+ version: 0.7.0
69
78
  - !ruby/object:Gem::Dependency
70
- name: rack
79
+ name: multi_json
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - ">="
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: 1.0.0
76
86
  type: :runtime
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - ">="
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: 1.0.0
83
94
  - !ruby/object:Gem::Dependency
84
- name: yajl-ruby
95
+ name: rack
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - ">="
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: 1.0.0
90
102
  type: :runtime
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - ">="
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: 1.0.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: websocket-driver
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.3.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 0.3.0
97
126
  - !ruby/object:Gem::Dependency
98
127
  name: compass
99
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
100
130
  requirements:
101
- - - "~>"
131
+ - - ~>
102
132
  - !ruby/object:Gem::Version
103
- version: 0.10.0
133
+ version: 0.11.0
104
134
  type: :development
105
135
  prerelease: false
106
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
107
138
  requirements:
108
- - - "~>"
139
+ - - ~>
109
140
  - !ruby/object:Gem::Version
110
- version: 0.10.0
141
+ version: 0.11.0
111
142
  - !ruby/object:Gem::Dependency
112
143
  name: haml
113
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
114
146
  requirements:
115
- - - "~>"
147
+ - - ~>
116
148
  - !ruby/object:Gem::Version
117
149
  version: 3.1.0
118
150
  type: :development
119
151
  prerelease: false
120
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
121
154
  requirements:
122
- - - "~>"
155
+ - - ~>
123
156
  - !ruby/object:Gem::Version
124
157
  version: 3.1.0
125
158
  - !ruby/object:Gem::Dependency
126
- name: jake
159
+ name: puma
127
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
128
162
  requirements:
129
- - - ">="
163
+ - - ! '>='
130
164
  - !ruby/object:Gem::Version
131
- version: 1.1.1
165
+ version: 2.0.0
132
166
  type: :development
133
167
  prerelease: false
134
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
135
170
  requirements:
136
- - - ">="
171
+ - - ! '>='
137
172
  - !ruby/object:Gem::Version
138
- version: 1.1.1
173
+ version: 2.0.0
139
174
  - !ruby/object:Gem::Dependency
140
175
  name: rake
141
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
142
178
  requirements:
143
- - - ">="
179
+ - - ! '>='
144
180
  - !ruby/object:Gem::Version
145
181
  version: '0'
146
182
  type: :development
147
183
  prerelease: false
148
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
149
186
  requirements:
150
- - - ">="
187
+ - - ! '>='
151
188
  - !ruby/object:Gem::Version
152
189
  version: '0'
153
190
  - !ruby/object:Gem::Dependency
154
191
  name: rspec
155
192
  requirement: !ruby/object:Gem::Requirement
193
+ none: false
156
194
  requirements:
157
- - - ">="
195
+ - - ! '>='
158
196
  - !ruby/object:Gem::Version
159
197
  version: '0'
160
198
  type: :development
161
199
  prerelease: false
162
200
  version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
163
202
  requirements:
164
- - - ">="
203
+ - - ! '>='
165
204
  - !ruby/object:Gem::Version
166
205
  version: '0'
167
206
  - !ruby/object:Gem::Dependency
168
207
  name: rack-proxy
169
208
  requirement: !ruby/object:Gem::Requirement
209
+ none: false
170
210
  requirements:
171
- - - ">="
211
+ - - ~>
172
212
  - !ruby/object:Gem::Version
173
- version: '0'
213
+ version: 0.4.0
174
214
  type: :development
175
215
  prerelease: false
176
216
  version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
177
218
  requirements:
178
- - - ">="
219
+ - - ~>
179
220
  - !ruby/object:Gem::Version
180
- version: '0'
221
+ version: 0.4.0
181
222
  - !ruby/object:Gem::Dependency
182
223
  name: rack-test
183
224
  requirement: !ruby/object:Gem::Requirement
225
+ none: false
184
226
  requirements:
185
- - - ">="
227
+ - - ! '>='
186
228
  - !ruby/object:Gem::Version
187
229
  version: '0'
188
230
  type: :development
189
231
  prerelease: false
190
232
  version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
191
234
  requirements:
192
- - - ">="
235
+ - - ! '>='
193
236
  - !ruby/object:Gem::Version
194
237
  version: '0'
195
238
  - !ruby/object:Gem::Dependency
196
- name: rainbows
239
+ name: RedCloth
197
240
  requirement: !ruby/object:Gem::Requirement
241
+ none: false
198
242
  requirements:
199
- - - ">="
243
+ - - ~>
200
244
  - !ruby/object:Gem::Version
201
- version: 1.0.0
245
+ version: 3.0.0
202
246
  type: :development
203
247
  prerelease: false
204
248
  version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
205
250
  requirements:
206
- - - ">="
251
+ - - ~>
207
252
  - !ruby/object:Gem::Version
208
- version: 1.0.0
253
+ version: 3.0.0
209
254
  - !ruby/object:Gem::Dependency
210
- name: RedCloth
255
+ name: sinatra
211
256
  requirement: !ruby/object:Gem::Requirement
257
+ none: false
212
258
  requirements:
213
- - - "~>"
259
+ - - ! '>='
214
260
  - !ruby/object:Gem::Version
215
- version: 3.0.0
261
+ version: '0'
216
262
  type: :development
217
263
  prerelease: false
218
264
  version_requirements: !ruby/object:Gem::Requirement
265
+ none: false
219
266
  requirements:
220
- - - "~>"
267
+ - - ! '>='
221
268
  - !ruby/object:Gem::Version
222
- version: 3.0.0
269
+ version: '0'
223
270
  - !ruby/object:Gem::Dependency
224
- name: sinatra
271
+ name: staticmatic
225
272
  requirement: !ruby/object:Gem::Requirement
273
+ none: false
226
274
  requirements:
227
- - - ">="
275
+ - - ! '>='
228
276
  - !ruby/object:Gem::Version
229
277
  version: '0'
230
278
  type: :development
231
279
  prerelease: false
232
280
  version_requirements: !ruby/object:Gem::Requirement
281
+ none: false
233
282
  requirements:
234
- - - ">="
283
+ - - ! '>='
235
284
  - !ruby/object:Gem::Version
236
285
  version: '0'
237
286
  - !ruby/object:Gem::Dependency
238
- name: staticmatic
287
+ name: rainbows
239
288
  requirement: !ruby/object:Gem::Requirement
289
+ none: false
240
290
  requirements:
241
- - - ">="
291
+ - - ~>
242
292
  - !ruby/object:Gem::Version
243
- version: '0'
293
+ version: 4.4.0
244
294
  type: :development
245
295
  prerelease: false
246
296
  version_requirements: !ruby/object:Gem::Requirement
297
+ none: false
247
298
  requirements:
248
- - - ">="
299
+ - - ~>
249
300
  - !ruby/object:Gem::Version
250
- version: '0'
301
+ version: 4.4.0
302
+ - !ruby/object:Gem::Dependency
303
+ name: thin
304
+ requirement: !ruby/object:Gem::Requirement
305
+ none: false
306
+ requirements:
307
+ - - ! '>='
308
+ - !ruby/object:Gem::Version
309
+ version: 1.2.0
310
+ type: :development
311
+ prerelease: false
312
+ version_requirements: !ruby/object:Gem::Requirement
313
+ none: false
314
+ requirements:
315
+ - - ! '>='
316
+ - !ruby/object:Gem::Version
317
+ version: 1.2.0
251
318
  - !ruby/object:Gem::Dependency
252
- name: testswarm-client
319
+ name: goliath
253
320
  requirement: !ruby/object:Gem::Requirement
321
+ none: false
254
322
  requirements:
255
- - - ">="
323
+ - - ! '>='
256
324
  - !ruby/object:Gem::Version
257
325
  version: '0'
258
326
  type: :development
259
327
  prerelease: false
260
328
  version_requirements: !ruby/object:Gem::Requirement
329
+ none: false
261
330
  requirements:
262
- - - ">="
331
+ - - ! '>='
263
332
  - !ruby/object:Gem::Version
264
333
  version: '0'
265
334
  - !ruby/object:Gem::Dependency
266
- name: thin
335
+ name: passenger
267
336
  requirement: !ruby/object:Gem::Requirement
337
+ none: false
268
338
  requirements:
269
- - - ">="
339
+ - - ! '>='
270
340
  - !ruby/object:Gem::Version
271
- version: 1.2.0
341
+ version: 4.0.0
272
342
  type: :development
273
343
  prerelease: false
274
344
  version_requirements: !ruby/object:Gem::Requirement
345
+ none: false
275
346
  requirements:
276
- - - ">="
347
+ - - ! '>='
277
348
  - !ruby/object:Gem::Version
278
- version: 1.2.0
349
+ version: 4.0.0
279
350
  description:
280
351
  email: jcoglan@gmail.com
281
352
  executables: []
282
353
  extensions: []
283
354
  extra_rdoc_files:
284
- - README.rdoc
355
+ - README.md
285
356
  files:
286
- - History.txt
287
- - README.rdoc
357
+ - CHANGELOG.md
358
+ - README.md
359
+ - lib/faye-browser.js
288
360
  - lib/faye-browser-min.js
289
361
  - lib/faye-browser-min.js.map
290
- - lib/faye-browser.js
291
362
  - lib/faye.rb
292
- - lib/faye/adapters/rack_adapter.rb
293
- - lib/faye/adapters/static_server.rb
294
- - lib/faye/engines/connection.rb
295
- - lib/faye/engines/memory.rb
296
- - lib/faye/engines/proxy.rb
297
- - lib/faye/error.rb
298
- - lib/faye/mixins/logging.rb
299
- - lib/faye/mixins/publisher.rb
300
- - lib/faye/mixins/timeouts.rb
363
+ - lib/faye/protocol/grammar.rb
364
+ - lib/faye/protocol/socket.rb
301
365
  - lib/faye/protocol/channel.rb
302
- - lib/faye/protocol/client.rb
303
366
  - lib/faye/protocol/extensible.rb
304
- - lib/faye/protocol/grammar.rb
305
367
  - lib/faye/protocol/publication.rb
306
- - lib/faye/protocol/server.rb
307
- - lib/faye/protocol/socket.rb
308
368
  - lib/faye/protocol/subscription.rb
369
+ - lib/faye/protocol/envelope.rb
370
+ - lib/faye/protocol/server.rb
371
+ - lib/faye/protocol/client.rb
372
+ - lib/faye/engines/memory.rb
373
+ - lib/faye/engines/proxy.rb
374
+ - lib/faye/engines/connection.rb
375
+ - lib/faye/util/namespace.rb
376
+ - lib/faye/adapters/static_server.rb
377
+ - lib/faye/adapters/rack_adapter.rb
378
+ - lib/faye/mixins/timeouts.rb
379
+ - lib/faye/mixins/logging.rb
380
+ - lib/faye/mixins/deferrable.rb
381
+ - lib/faye/mixins/publisher.rb
382
+ - lib/faye/error.rb
383
+ - lib/faye/transport/web_socket.rb
309
384
  - lib/faye/transport/http.rb
310
385
  - lib/faye/transport/local.rb
311
386
  - lib/faye/transport/transport.rb
312
- - lib/faye/transport/web_socket.rb
313
- - lib/faye/util/namespace.rb
314
- - spec/browser.html
315
- - spec/encoding_helper.rb
316
- - spec/install.sh
317
- - spec/javascript/channel_spec.js
318
- - spec/javascript/client_spec.js
319
- - spec/javascript/dispatcher_spec.js
320
- - spec/javascript/engine/memory_spec.js
321
- - spec/javascript/engine_spec.js
322
- - spec/javascript/faye_spec.js
323
- - spec/javascript/grammar_spec.js
324
- - spec/javascript/node_adapter_spec.js
325
- - spec/javascript/publisher_spec.js
326
- - spec/javascript/server/connect_spec.js
327
- - spec/javascript/server/disconnect_spec.js
328
- - spec/javascript/server/extensions_spec.js
329
- - spec/javascript/server/handshake_spec.js
330
- - spec/javascript/server/integration_spec.js
331
- - spec/javascript/server/publish_spec.js
332
- - spec/javascript/server/subscribe_spec.js
333
- - spec/javascript/server/unsubscribe_spec.js
334
- - spec/javascript/server_spec.js
335
- - spec/javascript/transport_spec.js
336
- - spec/node.js
337
- - spec/phantom.js
338
- - spec/ruby/channel_spec.rb
339
- - spec/ruby/client_spec.rb
340
- - spec/ruby/engine/memory_spec.rb
341
- - spec/ruby/engine_examples.rb
342
- - spec/ruby/faye_spec.rb
343
- - spec/ruby/grammar_spec.rb
344
- - spec/ruby/publisher_spec.rb
345
- - spec/ruby/rack_adapter_spec.rb
346
- - spec/ruby/server/connect_spec.rb
347
- - spec/ruby/server/disconnect_spec.rb
348
- - spec/ruby/server/extensions_spec.rb
349
- - spec/ruby/server/handshake_spec.rb
350
- - spec/ruby/server/integration_spec.rb
351
- - spec/ruby/server/publish_spec.rb
352
- - spec/ruby/server/subscribe_spec.rb
353
- - spec/ruby/server/unsubscribe_spec.rb
354
- - spec/ruby/server_spec.rb
355
- - spec/ruby/transport_spec.rb
356
- - spec/spec_helper.rb
357
- - spec/testswarm
358
- - spec/thin_proxy.rb
359
387
  homepage: http://faye.jcoglan.com
360
- licenses: []
361
- metadata: {}
388
+ licenses:
389
+ - MIT
362
390
  post_install_message:
363
391
  rdoc_options:
364
- - "--main"
365
- - README.rdoc
392
+ - --main
393
+ - README.md
394
+ - --markup
395
+ - markdown
366
396
  require_paths:
367
397
  - lib
368
398
  required_ruby_version: !ruby/object:Gem::Requirement
399
+ none: false
369
400
  requirements:
370
- - - ">="
401
+ - - ! '>='
371
402
  - !ruby/object:Gem::Version
372
403
  version: '0'
373
404
  required_rubygems_version: !ruby/object:Gem::Requirement
405
+ none: false
374
406
  requirements:
375
- - - ">="
407
+ - - ! '>='
376
408
  - !ruby/object:Gem::Version
377
409
  version: '0'
378
410
  requirements: []
379
411
  rubyforge_project:
380
- rubygems_version: 2.2.2
412
+ rubygems_version: 1.8.23
381
413
  signing_key:
382
- specification_version: 4
414
+ specification_version: 3
383
415
  summary: Simple pub/sub messaging for the web
384
416
  test_files: []