49 Commits
Author SHA1 Message Date
James Coglan a403ca4c8d Simplify the subprotocol selection code. 2014-07-04 20:50:08 +01:00
James Coglan 4b4d69e946 Delegate the protocol and version methods correctly in the TCP driver. 2014-07-04 09:42:26 +01:00
James Coglan d00cbadedb Stop the Hybi parser hanging onto data it doesn't need after emitFrame(). 2014-06-16 20:45:48 +01:00
James Coglan 7c755523f1 Include RFC 7230 grammar notes. 2014-06-07 22:23:39 +01:00
James Coglan 1b3f32bbc7 Trailing blank lines are bad. 2014-05-17 00:34:48 +01:00
James Coglan 03ca89f4a0 Remove a duplicated request-method check from WebSocket.websocket?. 2014-05-09 00:31:31 +01:00
James Coglan f55f2b221c Header names must not contain backslashes. Include grammer from RFC2616 to clarify this. 2014-05-09 00:30:28 +01:00
James Coglan 23c8e8eb91 The file that loads the C code is not executable and does not need a shebang. 2014-04-17 02:29:56 +01:00
James Coglan 2f8f281615 Correct the draft-76 status line reason phrase. 2014-04-17 02:22:19 +01:00
James Coglan ddd90b5438 Tweak the regexes for parsing HTTP. 2014-04-17 02:19:14 +01:00
Steven Williamson 08189c2a30 Minor fixes to allow native gems to load.
- websocket_mask.rb is in lib which in turn then loads websocket_mask.so
  which should reside in the extensions directory external to the gem
  directory at least as of rubygems 2.2.2.

- Changed extensions directory to match gemname as suggested in rubygems
  guide

Simplifies loading the native extension but only tested on ruby 2.1.1
and only in my environment.
2014-04-14 17:18:54 +01:00
James Coglan 13780f7a61 Reduce MAX_LENGTH to 64 MB. 2013-12-27 18:19:09 +00:00
James Coglan 18170c0c61 Stop parsing Hybi once we go into a failure state. 2013-12-27 18:13:31 +00:00
James Coglan 74c4cc1190 Extend max-length checking to draft-{75,76}. 2013-12-20 10:27:48 +00:00
James Coglan fafd949641 Extend max-length checking to short (<= 125 bytes) frames and to sequences of continuation frames. 2013-12-20 10:23:53 +00:00
James Coglan e3587fcbb1 Add a max_length option to the Hybi/Client class. 2013-12-02 21:55:43 +00:00
James Coglan eae69314f1 Add support for Basic Auth URLs to the client driver. 2013-09-09 20:28:29 +01:00
James Coglan 46af51d04e Dup the listener list during EventEmitter#emit so that events unregistered during this call don't cause others to be skipped. 2013-08-04 13:57:08 +01:00
James Coglan cd53761699 Fix EventEmitter#listener_count in the case where the event type does not exist, and add EventEmitter#listners. 2013-08-04 12:11:37 +01:00
James Coglan ac3bb51cbd Adjust encoding operations so that encoding is explicit at the call site, and all strings written to I/O are ASCII-8BIT. 2013-07-02 09:46:29 +01:00
James Coglan ee5fe9ec5f Messages should be queued when the client is in the 'pre-connecting' state, as the client is initially. 2013-06-06 10:25:10 +01:00
James Coglan ae84f0eaf7 Headers#inspect should call @raw.inspect. 2013-05-12 15:12:44 +01:00
James Coglan 8cd6ff1dde Set status and headers as soon as they are known, so they are available in case of an error. 2013-05-12 14:49:59 +01:00
James Coglan be00c65ebd Make Headers#inspect do something useful. 2013-05-12 14:01:15 +01:00
James Coglan cfd2806683 Remove an unneeded instance variable. 2013-05-12 12:41:51 +01:00
James Coglan 3902b8bc4f Around here we use square brackets for arrays. 2013-05-11 23:03:17 +01:00
James Coglan 074a8a2f16 Add #status and #headers methods to the Client driver. 2013-05-11 20:42:06 +01:00
James Coglan 5a7fadbcbe Add API for setting custom handshake headers. 2013-05-11 20:28:36 +01:00
James Coglan 020c094e96 Add a driver for handling TCP servers, where we don't want to make the user parse the HTTP request. 2013-05-11 19:28:59 +01:00
James Coglan ba696e8e2c Implement a proper streaming HTTP response parser. This makes the client-side parser more robust and also gives a way to building a driver for TCP servers. 2013-05-11 16:56:29 +01:00
James Coglan 93dd655d6d Implement EventEmitter#on as a method that calls #add_listener instead of being an alias, so that overriding the latter affects the former. 2013-05-04 18:02:40 +01:00
James Coglan c9388b7627 Add a listener_count method to EventEmitter. 2013-05-04 18:00:17 +01:00
James Coglan c5526b1c09 Return false from websocket? unless the request method is GET. 2013-05-04 17:46:35 +01:00
James Coglan be1f1cdc35 Rename the module to websocket-driver. 2013-05-04 16:43:25 +01:00
James Coglan 9a28b3f90d Various bits of housekeeping. 2013-05-03 09:04:14 +01:00
James Coglan 86b3235e82 499 and 4999 are not the same number, James. 2013-05-02 01:25:12 +01:00
James Coglan f61a5e60f2 Add more robust error handling for Hybi and Client and emit error events when the protocol goes wrong. 2013-05-02 00:09:34 +01:00
James Coglan 7b0daf6f3c Implement the EventEmitter interface. 2013-04-30 08:53:33 +01:00
James Coglan 8855a0e720 Refer to the draft-76 request body as 'body' rather than 'head'. 2013-04-29 22:02:19 +01:00
James Coglan 8b975a0031 Return the protocol version from the Client handler. 2013-04-29 21:37:35 +01:00
James Coglan 38b19487c5 A few corrections I made while porting to Node. 2013-04-29 20:28:47 +01:00
James Coglan 2662d43b08 Some small refactorings I spotted while porting this to Node. 2013-04-29 00:14:45 +01:00
James Coglan 24d3e2ec85 Change the server() method to rack(). 2013-04-21 18:25:41 +02:00
James Coglan 10da09afbd Always emit the empty string instead of nil as the closure reason in Hybi. 2013-04-20 22:04:24 +01:00
James Coglan 787697dc59 Some more large renaming, this time putting everything inside the WebSocket::Protocol namespace. 2013-04-20 18:22:09 +01:00
James Coglan 948e6fb2e2 Switch to using event objects. 2013-04-20 15:17:21 +01:00
James Coglan eee225441e Empty the buffer once the whole handshake response has been received by the client, else HTTP headers are published as messages. 2013-04-20 14:56:44 +01:00
James Coglan 56dd161ee1 Add text() and binary() methods as sugar over frame(). 2013-04-20 13:59:16 +01:00
James Coglan 1be1a33eb1 Rename all of the things: Faye::WebSocket is now WebSocket::Protocol. 2013-04-20 13:00:25 +01:00