- Implement TLS certificate verification and enable it by default on client connections
- Add a
:tls
option to the client with sub-fields:root_cert_file
and:verify_peer
for configuring TLS verification
- Use the EventMachine API rather than
IO#write
to 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#unbind
is 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_INFO
andQUERY_STRING
rather than the non-standardREQUEST_URI
from the Rack env
- Fix the
headers
andstatus
methods 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.attach
to the socket
- Add the standard
code
andreason
parameters to theclose
method
- Only emit
error
once, 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_method
to implementEvent
properties, 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
WebSocket
class
- Fix WebSocket detection in cases where the web server does not produce an
env
- Support the
max_length
websocket-driver option - Expose a
message
property onerror
events
- Allow the server to send custom headers with EventSource responses
- Stop implicitly depending on Rack 1.4
- Catch errors thrown by EventMachine and emit
error
andclose
events
- Release a gem without log and pid files in it
- Add support for custom headers
- Extract the protocol handlers into the
websocket-driver
library - Support the
rack.hijack
API - Add support for Rainbows 4.5 and Puma
- Officially support JRuby and Rubinius
- Emit the
close
event if TCP is closed before CLOSE frame is acked - Treat the
Upgrade: websocket
header case-insensitively because of IE10 - Do not suppress headers in the Thin and Rainbows adapters unless the status is
101
- Add
Connection: close
to 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.rb
a no-op on JRuby
- Port masking-function C extension to Java for JRuby
- Treat anything other than an
Array
as a string when callingsend()
- Fix error loading UTF-8 validation code on Ruby 1.9 with
-Ku
flag
- Add
ping()
method to server-sideWebSocket
andEventSource
- Buffer
send()
calls until the draft-76 handshake is complete
- Add support for
EventSource
connections - Support the Thin, Rainbows and Goliath web servers
- Add support for
Sec-WebSocket-Protocol
negotiation - Support
hixie-76
close frames and 75/76 ignored segments - Improve performance of HyBi parsing/framing functions
- Write masking function in C
- Make
hixie-76
sockets work through HAProxy
- Fix
add_event_listener()
interface methods
- Initial release, based on WebSocket components from Faye