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
@@ -1,21 +1,42 @@
1
- === 0.8.11 / 2014-07-08
2
-
3
- * Make some changes to JSON-P responses to mitigate the Rosetta Flash attack
4
- * http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
5
-
6
-
7
- === 0.8.10 -- removed due to error while publishing
8
-
9
-
10
- === 0.8.9 / 2013-02-26
1
+ ### 1.0.0 / 2013-10-01
2
+
3
+ * Client changes:
4
+ * Allow clients to be instantiated with URI objects rather than strings
5
+ * Add a `ca` option to the Node `Client` class for passing in trusted server certificates
6
+ * Objects supporting the `callback()` method in JavaScript are now Promises
7
+ * Fix protocol-relative URI parsing in the client
8
+ * Remove the `getClientId()` and `getState()` methods from the `Client` class
9
+ * Transport changes:
10
+ * Add request-size limiting to all batching transports
11
+ * Make the WebSocket transport more robust against quiet network periods and clients going to sleep
12
+ * Support cookies across all transports when using the client on Node.js or Ruby
13
+ * Support custom headers in the `cross-origin-long-polling` and server-side `websocket` transports
14
+ * Adapter changes:
15
+ * Support the `rack.hijack` streaming API
16
+ * Migrate to MultiJson for JSON handling on Ruby, allowing use of JRuby
17
+ * Escape U+2028 and U+2029 in JSON-P output
18
+ * Fix a bug stopping requests being routed when the mount point is `/`
19
+ * Fix various bugs that cause errors to be thrown if we try to send a message over a closed socket
20
+ * Remove the `listen()` method from `Adapter` in favour of using server-specific APIs
21
+ * Server changes:
22
+ * Use cryptographically secure random number generators to create client IDs
23
+ * Allow extensions to access request properties by using 3-ary methods
24
+ * Objects supporting the `bind()` method now implement the full `EventEmitter` API
25
+ * Stop the server from forwarding the `clientId` property of published messages
26
+ * Miscellaneous:
27
+ * Support Browserify by returning the client module
28
+ * `Faye.logger` can now be a logger object rather than a function
29
+
30
+
31
+ ### 0.8.9 / 2013-02-26
11
32
 
12
33
  * Specify ciphers for SSL on Node to mitigate the BEAST attack
13
34
  * Mitigate increased risk of socket hang-up errors in Node v0.8.20
14
35
  * Fix race condition when processing outgoing extensions in the Node server
15
- * Fix problem loading the client script when using {mount: '/'}
36
+ * Fix problem loading the client script when using `{mount: '/'}`
16
37
  * Clean up connection objects when a WebSocket is re-used with a new clientId
17
38
  * All JavaScript code now runs in strict mode
18
- * Select transport on handshake, instead of on client creation to allow time for disable() calls
39
+ * Select transport on handshake, instead of on client creation to allow time for `disable()` calls
19
40
  * Do not speculatively open WebSocket/EventSource connections if they are disabled
20
41
  * Gracefully handle WebSocket messages with no data on the client side
21
42
  * Close and reconnect WebSocket when onerror is fired, not just when onclose is fired
@@ -23,166 +44,166 @@
23
44
  * Don't parse query strings when checking if a URL is same-origin or not
24
45
 
25
46
 
26
- === 0.8.8 / 2013-01-10
47
+ ### 0.8.8 / 2013-01-10
27
48
 
28
49
  * Patch security hole allowing remote execution of arbitrary Server methods
29
50
 
30
51
 
31
- === 0.8.7 -- removed due to error while publishing
52
+ ### 0.8.7 -- removed due to error while publishing
32
53
 
33
54
 
34
- === 0.8.6 / 2012-10-07
55
+ ### 0.8.6 / 2012-10-07
35
56
 
36
57
  * Make sure messages pushed to the client over a socket pass through outgoing extensions
37
58
 
38
59
 
39
- === 0.8.5 / 2012-09-30
60
+ ### 0.8.5 / 2012-09-30
40
61
 
41
- * Fix a bug in URI.parse() that caused Faye endpoints to inherit search and hash from window.location
62
+ * Fix a bug in `URI.parse()` that caused Faye endpoints to inherit search and hash from `window.location`
42
63
 
43
64
 
44
- === 0.8.4 / 2012-09-29
65
+ ### 0.8.4 / 2012-09-29
45
66
 
46
67
  * Optimise upgrade process so that WebSocket is tested earlier and the connection is cached
47
68
  * Check that EventSource actually works to work around broken Opera implementation
48
- * Emit 'connection:open' and 'connection:close' events from the Engine proxy
69
+ * Emit `connection:open` and `connection:close` events from the Engine proxy
49
70
  * Increase size of client IDs from 128 to 160 bits
50
71
  * Fix bug with relative URL resolution in IE
51
72
  * Limit the JSON-P transport's message buffer so it doesn't create over-long URLs
52
- * Send 'Pragma: no-cache' with XHR requests to guard against iOS 6 POST caching
53
- * Add 'charset=utf-8' to response Content-Type headers
73
+ * Send `Pragma: no-cache` with XHR requests to guard against iOS 6 POST caching
74
+ * Add `charset=utf-8` to response Content-Type headers
54
75
 
55
76
 
56
- === 0.8.3 / 2012-07-15
77
+ ### 0.8.3 / 2012-07-15
57
78
 
58
- * Client#subscribe returns an array of Subscriptions if given an array of channels
79
+ * `Client#subscribe` returns an array of Subscriptions if given an array of channels
59
80
  * Allow different endpoints to be specified per-transport
60
- * Only use IE's XDomainRequest for same-protocol requests
81
+ * Only use IE's `XDomainRequest` for same-protocol requests
61
82
  * Replace URL parser with one that treats relative URLs the same as the browser
62
83
  * Improve logging of malformed requests and detect problems earlier
63
84
  * Make sure socket connections are closed when a client session is timed out
64
- * Stop WebSocket reconnecting after window.onbeforeunload
85
+ * Stop WebSocket reconnecting after `window.onbeforeunload`
65
86
 
66
87
 
67
- === 0.8.2 / 2012-04-12
88
+ ### 0.8.2 / 2012-04-12
68
89
 
69
- * Fix replacement of null with {} in copyObject()
70
- * Make EventSource transport trigger transport:up/down events
90
+ * Fix replacement of `null` with `{}` in `copyObject()`
91
+ * Make EventSource transport trigger `transport:up/down` events
71
92
  * Supply source map for minified JavaScript client, and include source in gem
72
- * Return Content-Length: 0 for 304 responses
93
+ * Return `Content-Length: 0` for 304 responses
73
94
  * Handle pre-flight CORS requests from old versions of Safari
74
95
 
75
96
 
76
- === 0.8.1 / 2012-03-15
97
+ ### 0.8.1 / 2012-03-15
77
98
 
78
- * Make Publisher#trigger safe for event listeners that modify the listener list
79
- * Make Server#subscribe return a response if the incoming message has an error
80
- * Fix edge case in code that identifies the clientId of socket connections
81
- * Return Content-Length headers for HTTP responses
99
+ * Make `Publisher#trigger` safe for event listeners that modify the listener list
100
+ * Make `Server#subscribe` return a response if the incoming message has an error
101
+ * Fix edge case in code that identifies the `clientId` of socket connections
102
+ * Return `Content-Length` headers for HTTP responses
82
103
  * Don't send empty lists of messages from the WebSocket transport
83
- * Stop client sending multiple /meta/subscribe messages for subscriptions made before handshaking
84
- * Stop client treating incoming published messages as responses to /meta/* messages
104
+ * Stop client sending multiple `/meta/subscribe` messages for subscriptions made before handshaking
105
+ * Stop client treating incoming published messages as responses to `/meta/*` messages
85
106
 
86
107
 
87
- === 0.8.0 / 2012-02-26
108
+ ### 0.8.0 / 2012-02-26
88
109
 
89
- * Extract the Redis engine into a separate library, faye-redis
110
+ * Extract the Redis engine into a separate library, `faye-redis`
90
111
  * Stabilize and document the Engine API so others can write backends
91
- * Extract WebSocket and EventSource tools into a separate library, faye-websocket
112
+ * Extract WebSocket and EventSource tools into a separate library, `faye-websocket`
92
113
  * Improve use of WebSocket so messages are immediately pushed rather than polling
93
114
  * Introduce new EventSource-based transport, for proxies that block WebSocket
94
- * Support the Rainbows and Goliath web servers for Ruby, same as faye-websocket
115
+ * Support the Rainbows and Goliath web servers for Ruby, same as `faye-websocket`
95
116
  * Improve detection of network errors and switch to fixed-interval for reconnecting
96
- * Add setHeader() method to Client (e.g. for connecting to Salesforce API)
97
- * Add timeout() method to Faye.Deferrable to match EventMachine::Deferrable
98
- * Fix some bugs in client-side message handlers created with subscribe()
99
- * Improve speed and memory consumption of copyObject()
117
+ * Add `setHeader()` method to Client (e.g. for connecting to Salesforce API)
118
+ * Add `timeout()` method to `Faye.Deferrable` to match `EventMachine::Deferrable`
119
+ * Fix some bugs in client-side message handlers created with `subscribe()`
120
+ * Improve speed and memory consumption of `copyObject()`
100
121
  * Switch from JSON to Yajl for JSON parsing in Ruby
101
122
 
102
123
 
103
- === 0.7.1 / 2011-12-22
124
+ ### 0.7.1 / 2011-12-22
104
125
 
105
- * Extension added() and removed() methods now receive the extended object
126
+ * Extension `added()` and `removed()` methods now receive the extended object
106
127
  * Detection of WebSockets in RackAdapter is more strict
107
128
 
108
129
 
109
- === 0.7.0 / 2011-11-22
130
+ ### 0.7.0 / 2011-11-22
110
131
 
111
132
  * Provide an event API for monitoring engine events on the server side
112
133
  * Implement server-side WebSocket connections for improved latency
113
134
  * Fix WebSocket protocol bugs and expose APIs for developers to use
114
135
  * Make server-side HTTP transports support SSL and cookies
115
136
  * Allow clients to disable selected transports and autodisconnection
116
- * Add callback/errback API to Client#publish() interface
117
- * Add 'socket' setting for the Redis engine for connecting through a Unix socket
137
+ * Add callback/errback API to `Client#publish()` interface
138
+ * Add `socket` setting for the Redis engine for connecting through a Unix socket
118
139
 
119
140
 
120
- === 0.6.7 / 2011-10-20
141
+ ### 0.6.7 / 2011-10-20
121
142
 
122
- * Cache client script in memory and add ETag and Last-Modified headers
123
- * Fix bug in Node Redis engine where 'undefined' was used if no namespace given
143
+ * Cache client script in memory and add `ETag` and `Last-Modified` headers
144
+ * Fix bug in Node Redis engine where `undefined` was used if no namespace given
124
145
  * Flush Redis message queues using a transaction to avoid re-delivery of messages
125
146
  * Fix race condition and timing errors present in Redis locking code
126
- * Use Cache-Control: no-cache, no-store on JSON-P responses
147
+ * Use `Cache-Control: no-cache, no-store` on JSON-P responses
127
148
  * Improvements to the CORS and JSON-P transports
128
149
  * Prevent retry handlers in transports from being invoked multiple times
129
150
  * Use the current page protocol by default when parsing relative URIs
130
151
 
131
152
 
132
- === 0.6.6 / 2011-09-12
153
+ ### 0.6.6 / 2011-09-12
133
154
 
134
- * Add :key and :cert options to the Adapter#listen methods for setting up SSL
155
+ * Add `:key` and `:cert` options to the `Adapter#listen` methods for setting up SSL
135
156
  * Fix error detection of CORS transport in IE9 running IE8 compatibility mode
136
157
  * Fix dependency versions so that Rubygems lets Faye install
137
158
 
138
159
 
139
- === 0.6.5 / 2011-08-29
160
+ ### 0.6.5 / 2011-08-29
140
161
 
141
162
  * Fix UTF-8 encoding bugs in draft-75/76 and protocol-8 WebSocket parsers
142
163
  * Switch to streaming parser for WebSocket protocol-8
143
- * Remove an SREM operation that shouldn't have been in the Redis engine
144
- * Move thin_extensions.rb so it's not on the Rubygems load path
164
+ * Remove an `SREM` operation that shouldn't have been in the Redis engine
165
+ * Move `thin_extensions.rb` so it's not on the Rubygems load path
145
166
 
146
167
 
147
- === 0.6.4 / 2011-08-18
168
+ ### 0.6.4 / 2011-08-18
148
169
 
149
170
  * Support WebSocket protocol used by Chrome 14 and Firefox 6
150
171
  * Fix handling of multibyte characters in WebSocket messages on Node
151
172
  * Improve message routing in Node memory engine to avoid false duplicates
152
173
 
153
174
 
154
- === 0.6.3 / 2011-07-10
175
+ ### 0.6.3 / 2011-07-10
155
176
 
156
177
  * Use sequential message IDs to reduce memory usage on the client side
157
178
  * Only send advice with handshake and connect responses
158
- * Stop trying to publish /meta/* messages - no-one is listening and it breaks /**
179
+ * Stop trying to publish `/meta/*` messages - no-one is listening and it breaks `/**`
159
180
  * Fix bug causing invalid listeners to appear after a client reconnection
160
- * Stop loading 'rubygems' within our library code
181
+ * Stop loading `rubygems` within our library code
161
182
  * Make sure we only queue a message for each client once in the Redis engine
162
183
  * Use lists instead of sets for message queues in Redis
163
184
  * Improve clean-up of expired clients in Redis engine
164
185
 
165
186
 
166
- === 0.6.2 / 2011-06-19
187
+ ### 0.6.2 / 2011-06-19
167
188
 
168
189
  * Add authentication, database selection and namespacing to Redis engine
169
190
  * Clean up all client data when removing clients from Redis
170
- * Fix cross-origin-long-polling for OPTIONS-aware browsers
191
+ * Fix `cross-origin-long-polling` for `OPTIONS`-aware browsers
171
192
  * Update secure WebSocket detection for recent Node versions
172
- * Reinstate 'faye.client' field in Rack environment
193
+ * Reinstate `faye.client` field in Rack environment
173
194
 
174
195
 
175
- === 0.6.1 / 2011-06-06
196
+ ### 0.6.1 / 2011-06-06
176
197
 
177
- * Fix cross-origin-long-polling support in RackAdapter
178
- * Plug some potential memory leaks in Memory engine
198
+ * Fix `cross-origin-long-polling` support in `RackAdapter`
199
+ * Plug some potential memory leaks in `Memory` engine
179
200
 
180
201
 
181
- === 0.6.0 / 2011-05-21
202
+ ### 0.6.0 / 2011-05-21
182
203
 
183
- * Extract core logic into the Engine class to support swappable backends
204
+ * Extract core logic into the `Engine` class to support swappable backends
184
205
  * Introduce a Redis-backed engine to support clustered web front-ends
185
- * Use CORS for cross-domain long-polling
206
+ * Use CORS for `cross-domain long-polling`
186
207
  * Make server more resilient against bad requests, including empty message lists
187
208
  * Perform subscription validation on the server and use errbacks to signal errors
188
209
  * Prohibit publishing to wildcard channels
@@ -191,44 +212,44 @@
191
212
  * Automatic integration tests using Terminus and TestSwarm
192
213
 
193
214
 
194
- === 0.5.5 / 2011-01-16
215
+ ### 0.5.5 / 2011-01-16
195
216
 
196
217
  * Open a real socket to check for WebSocket usability, not just object detection
197
218
  * Catch server-side errors when handshaking with WebSockets
198
219
 
199
220
 
200
- === 0.5.4 / 2010-12-19
221
+ ### 0.5.4 / 2010-12-19
201
222
 
202
- * Add a #callback method to Subscriptions to detect when they become active
203
- * Add :extensions option to RackAdapter to make it easier to extend middleware
204
- * Detect secure WebSocket requests through the HTTP_X_FORWARDED_PROTO header
205
- * Handle socket errors when sending WebSocket messages from NodeAdapter
223
+ * Add a `#callback` method to `Subscriptions` to detect when they become active
224
+ * Add `:extensions` option to `RackAdapter` to make it easier to extend middleware
225
+ * Detect secure WebSocket requests through the `HTTP_X_FORWARDED_PROTO` header
226
+ * Handle socket errors when sending WebSocket messages from `NodeAdapter`
206
227
  * Use exponential backoff to reconnect client-side WebSockets to reduce CPU load
207
228
 
208
229
 
209
- === 0.5.3 / 2010-10-21
230
+ ### 0.5.3 / 2010-10-21
210
231
 
211
- * Improve detection of wss: requirement for secure WebSocket connections
232
+ * Improve detection of `wss:` requirement for secure WebSocket connections
212
233
  * Correctly use default ports (80,443) for server-side HTTP connections
213
- * Support legacy application/x-www-form-urlencoded POST requests
234
+ * Support legacy `application/x-www-form-urlencoded` POST requests
214
235
  * Delete unused Channel objects that have all their subscribers removed
215
236
  * Fix resend/reconnect logic in WebSocket transport
216
237
  * Keep client script in memory rather than reading it from disk every time
217
238
  * Prevent error-adding extensions from breaking the core protocol
218
239
 
219
240
 
220
- === 0.5.2 / 2010-08-12
241
+ ### 0.5.2 / 2010-08-12
221
242
 
222
243
  * Support draft-76 of the WebSocket protocol (FF4, Chrome 6)
223
- * Reduce Connection::MAX_DELAY to improve latency
244
+ * Reduce `Connection::MAX_DELAY` to improve latency
224
245
 
225
246
 
226
- === 0.5.1 / 2010-07-21
247
+ ### 0.5.1 / 2010-07-21
227
248
 
228
- * Fix a publishing problem in Ruby LocalTransport
249
+ * Fix a publishing problem in Ruby `LocalTransport`
229
250
 
230
251
 
231
- === 0.5.0 / 2010-07-17
252
+ ### 0.5.0 / 2010-07-17
232
253
 
233
254
  * Handle multiple event listeners bound to a channel
234
255
  * Add extension system for adding domain-specific logic to the protocol
@@ -241,73 +262,73 @@
241
262
  * Change Node API for adding Faye service to an HTTP server
242
263
 
243
264
 
244
- === 0.3.4 / 2010-06-20
265
+ ### 0.3.4 / 2010-06-20
245
266
 
246
267
  * Stop local clients going into an infinite loop if a subscription block causes a reconnect
247
268
 
248
269
 
249
- === 0.3.3 / 2010-06-07
270
+ ### 0.3.3 / 2010-06-07
250
271
 
251
272
  * Bring Node APIs up to date with 0.1.97
252
- * Catch ECONNREFUSED errors in Node clients to withstand server outages
253
- * Refactor the Server internals
273
+ * Catch `ECONNREFUSED` errors in Node clients to withstand server outages
274
+ * Refactor the `Server` internals
254
275
 
255
276
 
256
- === 0.3.2 / 2010-04-04
277
+ ### 0.3.2 / 2010-04-04
257
278
 
258
279
  * Fix problems with JSON serialization when Prototype, MooTools present
259
280
  * Make the client reconnect if it doesn't hear from the server after a timeout
260
- * Stop JavaScript server returning NaN for advice.interval
261
- * Make Ruby server return an integer for advice.interval
281
+ * Stop JavaScript server returning `NaN` for `advice.interval`
282
+ * Make Ruby server return an integer for `advice.interval`
262
283
  * Ensure EventMachine is running before handling messages
263
- * Handle 'data' and 'end' events properly in Node HTTP API
264
- * Switch to application/json for content types and stop using querystring format in POST bodies
284
+ * Handle `data` and `end` events properly in Node HTTP API
285
+ * Switch to `application/json` for content types and stop using querystring format in POST bodies
265
286
  * Respond to any URL path under the mount point, not just the exact match
266
287
 
267
288
 
268
- === 0.3.1 / 2010-03-09
289
+ ### 0.3.1 / 2010-03-09
269
290
 
270
- * Pass client down through Rack stack as env['faye.client']
291
+ * Pass client down through Rack stack as `env['faye.client']`
271
292
  * Refactor some JavaScript internals to mirror Ruby codebase
272
293
 
273
294
 
274
- === 0.3.0 / 2010-03-01
295
+ ### 0.3.0 / 2010-03-01
275
296
 
276
297
  * Add server-side clients for Node.js and Ruby environments
277
298
  * Clients support both HTTP and in-process transports
278
299
  * Fix ID generation in JavaScript version to 128-bit IDs
279
- * Fix bug in interpretation of ** channel wildcard
280
- * Users don't have to call #connect() on clients any more
300
+ * Fix bug in interpretation of `**` channel wildcard
301
+ * Users don't have to call `#connect()` on clients any more
281
302
  * Fix timeout race conditions that were killing active connections
282
303
  * Support new Node APIs from 0.1.29.
283
304
 
284
305
 
285
- === 0.2.2 / 2010-02-10
306
+ ### 0.2.2 / 2010-02-10
286
307
 
287
308
  * Kick out requests with malformed JSON as 400s
288
309
 
289
310
 
290
- === 0.2.1 / 2010-02-04
311
+ ### 0.2.1 / 2010-02-04
291
312
 
292
313
  * Fix server-side flushing of callback-polling connections
293
314
  * Backend can be used cross-domain if running on Node or Thin
294
315
 
295
316
 
296
- === 0.2.0 / 2010-02-02
317
+ ### 0.2.0 / 2010-02-02
297
318
 
298
319
  * Port server to JavaScript with an adapter for Node.js
299
320
  * Support Thin's async responses in the Ruby version for complete non-blocking
300
321
  * Fix some minor client-side bugs in transport choice
301
322
 
302
323
 
303
- === 0.1.1 / 2009-07-26
324
+ ### 0.1.1 / 2009-07-26
304
325
 
305
326
  * Fix a broken client build
306
327
 
307
328
 
308
- === 0.1.0 / 2009-06-15
329
+ ### 0.1.0 / 2009-06-15
309
330
 
310
331
  * Ruby Bayeux server and Rack adapter
311
332
  * Internally evented using EventMachine, web frontend blocks
312
- * JavaScript client with long-polling and callback-polling
333
+ * JavaScript client with `long-polling` and `callback-polling`
313
334
 
@@ -0,0 +1,36 @@
1
+ # Faye
2
+
3
+ Faye is a set of tools for simple publish-subscribe messaging between web
4
+ clients. It ships with easy-to-use message routing servers for Node.js and Rack
5
+ applications, and clients that can be used on the server and in the browser.
6
+
7
+ * Documentation: http://faye.jcoglan.com
8
+ * Mailing list: http://groups.google.com/group/faye-users
9
+ * Bug tracker: http://github.com/faye/faye/issues
10
+ * Source code: http://github.com/faye/faye
11
+
12
+
13
+ ## License
14
+
15
+ (The MIT License)
16
+
17
+ Copyright (c) 2009-2013 James Coglan and contributors
18
+
19
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
20
+ this software and associated documentation files (the 'Software'), to deal in
21
+ the Software without restriction, including without limitation the rights to
22
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
23
+ of the Software, and to permit persons to whom the Software is furnished to do
24
+ so, subject to the following conditions:
25
+
26
+ The above copyright notice and this permission notice shall be included in all
27
+ copies or substantial portions of the Software.
28
+
29
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
35
+ SOFTWARE.
36
+