20 Commits
Author SHA1 Message Date
James Coglan 0034f5fe19 Fail the connection when the server receives an invalid Sec-WebSocket-Extensions header. 2015-03-26 08:51:34 +00:00
James Coglan 8a0235ef51 Don't send a close frame in response to receiving one, if we already sent a close frame. 2015-03-12 12:58:43 +00:00
James Coglan ebe4ce1382 Because Driver.frame() will now admit input when in readyState 2 (to allow for async extension shutdown), the Messages stream should use the text() and binary() methods that will block messages in that state. 2015-02-16 09:51:40 +00:00
James Coglan 7e34e7fd40 Correct the name of the test about proxy 'connect' events. 2014-11-08 16:43:36 +00:00
James Coglan 0bb47c17b4 Remove TLS concerns from the proxy implementation.
This results in a more simple design, in the sense of fewer concerns
being mixed together. It makes the API more verbose, but it's not
difficult to use correctly.

It also means that we make the I/O implementation deal with TLS, so it
can use tls.connect({socket: io}) or the upcoming TLSSocket class,
rather than this module needing a huge amount of boilerplate and
internal indirection to use tls.createSecurePair() and make Proxy wrap
pair.encrypted.

Using tls.connect({socket: io}) would be awkward on this end, because it
expects a stream that emits *incoming* data from the TCP connection. All
the streams in this module emit *outgoing* data that should be written
to TCP, so their polarity is flipped compared to what tls.connect()
wants, and resolving that involves even more stream boilerplate.
2014-11-08 15:20:08 +00:00
James Coglan 4348bec390 Some cleanup to remove bits I left lying around while refactoring proxy support. 2014-11-06 23:04:11 +00:00
James Coglan 550b3d906d Unify the proxy handshake, TLS handshake, and WebSocket protocol into a single stream when using driver.proxy() to simplify the API. 2014-11-05 23:30:15 +00:00
David Glasser b88b8d6856 proxy should emit 'close' when it's done
This will cause any stream piped into it to stop piping into it. (It's
the only way to unpipe a Node 0.8 Streams1-style pipe.)

This change allows you to remove the empty "stream.on('data')" in
faye-websocket.
2014-10-29 16:47:56 -07:00
James Coglan 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. 2014-10-29 22:07:01 +00:00
James Coglan bdc9bfe7e8 Add support for connecting via HTTP proxies. 2014-10-27 09:30:11 +00:00
David Glasser dcd7c278b6 driver.close() before driver.start() should close 2014-08-15 10:48:30 -07:00
James Coglan dfe7b2b000 Trailing blank lines are bad. 2014-05-17 00:35:31 +01:00
James Coglan 9f2782da14 Correct the draft-76 status line reason phrase. 2014-04-17 02:23:58 +01:00
David Glasser f15b331a34 Reduce frame max length to max Node Buffer length. 2013-10-11 19:21:14 -07:00
James Coglan 12f9f4d444 Add support for Basic Auth URLs to the client driver. 2013-08-13 17:16:49 +01:00
James Coglan c5b3df986b Migrate to jstest. 2013-07-01 02:10:29 +01:00
James Coglan 1124df2bf5 Add a Server driver for running WebSockets through a bare TCP server. 2013-05-12 01:13:50 +01:00
James Coglan ea4e289669 Add a setHeader() function to allow peers to add headers to their handshake responses. 2013-05-11 22:26:20 +01:00
James Coglan d7c65eedd9 Expose the status and headers from the response in the client driver. 2013-05-11 21:58:37 +01:00
James Coglan 25c075a408 Rename the module to websocket-driver. 2013-05-04 16:42:44 +01:00