- Represent binary messages as strings with
Encoding::BINARYrather than as arrays
- Handle 'cert already in hash table' error message on Ruby 3.1+
- Handle SSL certificate chains where not all the intermediate certificates are recognised by the client
- Prevent the client hanging if
close()is called when already closing
- Implement TLS certificate verification and enable it by default on client connections
- Add a
:tlsoption to the client with sub-fields:root_cert_fileand:verify_peerfor configuring TLS verification
- Use the EventMachine API rather than
IO#writeto write data; this uses the event loop and avoids getting blocked by slow clients
- In the case of a close timeout, don't block on waiting for writing to the socket to complete
- Fix a race condition that caused a timeout not to be cancelled immediately when the WebSocket is closed
- Change license from MIT to Apache 2.0
- Emit an error if
EventMachine::Connection#unbindis called with an error
- Forcibly close the I/O stream after a timeout if the peer does not respond
after calling
close()
- Set the SNI hostname when making secure requests
- Amend warnings issued when running with -W2
- Use
PATH_INFOandQUERY_STRINGrather than the non-standardREQUEST_URIfrom the Rack env
- Fix the
headersandstatusmethods onClient, which were broken in the last release
- Make sure errors can be safely emitted if creating the driver fails
- Prevent a race condition when binding
EM.attachto the socket
- Add the standard
codeandreasonparameters to theclosemethod
- Only emit
erroronce, and don't emit it afterclose
- Check that all options to the WebSocket constructor are recognized
- Allow protocol extensions to be passed into websocket-extensions
- Support connections via HTTP proxies
- Allow sockets to be closed when they are in any state other than
CLOSED
- Stop using
define_methodto implementEventproperties, since it blows the method cache - Stop setup errors masking URI errors in
Client#initialize - Make the Goliath adapter compatible with goliath-1.0.4.
- Remove an unneeded method override in the
WebSocketclass
- Fix WebSocket detection in cases where the web server does not produce an
env
- Support the
max_lengthwebsocket-driver option - Expose a
messageproperty onerrorevents
- Allow the server to send custom headers with EventSource responses
- Stop implicitly depending on Rack 1.4
- Catch errors thrown by EventMachine and emit
errorandcloseevents
- Release a gem without log and pid files in it
- Add support for custom headers
- Extract the protocol handlers into the
websocket-driverlibrary - Support the
rack.hijackAPI - Add support for Rainbows 4.5 and Puma
- Officially support JRuby and Rubinius
- Emit the
closeevent if TCP is closed before CLOSE frame is acked - Treat the
Upgrade: websocketheader case-insensitively because of IE10 - Do not suppress headers in the Thin and Rainbows adapters unless the status is
101
- Add
Connection: closeto EventSource response
- Add WebSocket error code
1011. - Handle URLs with no path correctly by sending
GET /
- Fix installation on JRuby with a platform-specific gem
- Make
extconf.rba no-op on JRuby
- Port masking-function C extension to Java for JRuby
- Treat anything other than an
Arrayas a string when callingsend() - Fix error loading UTF-8 validation code on Ruby 1.9 with
-Kuflag
- Add
ping()method to server-sideWebSocketandEventSource - Buffer
send()calls until the draft-76 handshake is complete
- Add support for
EventSourceconnections - Support the Thin, Rainbows and Goliath web servers
- Add support for
Sec-WebSocket-Protocolnegotiation - Support
hixie-76close frames and 75/76 ignored segments - Improve performance of HyBi parsing/framing functions
- Write masking function in C
- Make
hixie-76sockets work through HAProxy
- Fix
add_event_listener()interface methods
- Initial release, based on WebSocket components from Faye