58474a837c
Populate the Message.data field before handing off to extensions.
James Coglan2014-11-29 01:13:18 +00:00
82182eb348
Close the Extensions object when ending the session.
James Coglan2014-11-29 00:55:02 +00:00
94041e7a86
websocket-extensions uses Node-style callbacks rather than emitting error events.
James Coglan2014-11-27 09:32:49 +00:00
e73f7db754
Rename validFrame() to validFrameRsv().
James Coglan2014-11-26 09:59:08 +00:00
0efc0ebb8d
Don't pass the driver into the Extensions constructor.
James Coglan2014-11-25 23:17:39 +00:00
f904131d21
Extract the Extensions class into another module.
James Coglan2014-11-25 21:14:17 +00:00
ee664ba6c9
Decouple Extensions and individual extension libs from the Driver.fail() method, emitting errors instead.
James Coglan2014-11-25 19:42:54 +00:00
538239b761
Move the header-parsing functions into class methods on Extensions.
James Coglan2014-11-25 09:11:58 +00:00
2bc103c781
Adjust the data structures in the Extensions parser so that the server sets the order of extensions, per the spec.
James Coglan2014-11-24 23:03:50 +00:00
eceb59e2fb
Implement the client-side framework for extensions.
James Coglan2014-11-24 22:05:31 +00:00
40341c5439
The Client driver requires the crypto module for generating keys.
James Coglan2014-11-24 00:41:34 +00:00
396637d463
Extract permessage-deflate into a separate module.
James Coglan2014-11-23 21:46:04 +00:00
c986ad231c
Enable strict mode on all source files.
James Coglan2014-11-23 20:09:26 +00:00
ef897eed1c
Implement deflate compression on server-to-client messages.
James Coglan2014-11-23 19:45:02 +00:00
724a5f19a4
Flesh out the parameter validation for extensions, and provide better support for multiple values of extension params and HTTP headers.
James Coglan2014-11-23 15:21:11 +00:00
0332ce2625
Initial support for permessage-deflate, only supports client-to-server compression but enough to pass the Autobahn suite.
James Coglan2014-11-23 13:11:24 +00:00
6146615801
Extract Hybi parser state into Frame and Message structs.
James Coglan2014-11-22 13:34:34 +00:00
4348bec390
Some cleanup to remove bits I left lying around while refactoring proxy support.
James Coglan2014-11-06 23:04:11 +00:00
550b3d906d
Unify the proxy handshake, TLS handshake, and WebSocket protocol into a single stream when using driver.proxy() to simplify the API.
James Coglan2014-11-05 23:30:15 +00:00
76f4128634
Redesign the proxy API so that we can more cleanly deal with TLS, either to the proxy server or origin server or both, while still allowing control of the TLS options and custom headers, and not leaking so much of the implementation.
James Coglan2014-10-29 22:07:01 +00:00
32e6715b6e
[wip] Emit a proxy-connect event so the client can perform a TLS handshake at the right time.
James Coglan2014-10-29 19:27:30 +00:00
bf39b7b44b
Optimise some special cases in StreamReader; return a new Buffer from read() immediately if there's enough buffered data, and if the read can be fulfilled entirely from the first queued buffer than take a slice rather than copying into a new buffer.
James Coglan2014-05-11 13:33:51 +01:00
85ba40ac32
Convert StreamReader so that it emits streams rather than waiting for an entire payload.
James Coglan2014-05-09 15:35:40 +01:00
e6edb23681
Rather than a sync read() method in a loop, use an async read() method with a callback.
James Coglan2014-05-08 16:35:21 +01:00
d93c853414
Don't pre-allocate a huge Buffer before we know there's enough chunks in the read queue to complete a message.
James Coglan2013-12-02 21:07:33 +00:00
2dff35d3e4
Map Node v0.11's magic numbers for HTTP methods.
James Coglan2013-12-02 13:02:38 +00:00
17e2bd4084
Messages should be queued when the driver is in the 'pre-connecting' state, as the client is initially.
James Coglan2013-05-17 11:48:36 +01:00
26c4873f3e
Apply offset to the consumed offset from HTTP parsing before we check whether the whole buffer has been used.
James Coglan2013-05-12 01:45:04 +01:00