- Requires Elixir version 1.7+ due to changes in Stacktrace
- Added
ssl_options
documentation- Also support for dialyzer analysis
- Properly hand-off when establishing a connection using
:ssl
- Before we could miss messages that were sent before hand-off
- Handle large but incomplete
:continuation
frames.
- Added
ssl_options
toWebSockex.Conn
struct.- Documentation Pending...
- Fix
pong
frame not being a correct return type in spec - Fix bare
ping
andpong
frames in spec- When there is no associated payload for their frame types
- Fix handling SSL socket closings during the
close_loop
- Add types and documentation for processes named with
:via
and:global
- Fixed a crash when replying to a closed socket
- Allow
:via
and:global
tuples for named registration. This includes handling forcast/2
andsend_frame/2
. - Add access to response headers during
handle_connect/2
viaConn.resp_headers
. - Add
Conn.parse_url/1
to handle url to URI conversion. - Allow
Conn.new/2
to use a url string instead of aURI
struct. - Automatically add a "/" path to a pathless url.
- The HTTP request will break without a valid path!
- Add
child_spec
definitions for Elixir 1.5+- Or any version that exports
Supervisor.child_spec/2
- Or any version that exports
- Some documentation tweaks
- No longer invoke
handle_disconnect
if there is reason to exit from invoking a callback. (e.g. an exception was raised) - Properly handle unexpected SSL socket termination.
- This seems pretty important, but I don't know...
- Return a descriptive error when trying to use
send_frame/2
in a callback.
send_frame/2
is now synchronous and returns an error when connection is opening or closing.
- Added debug printing for the
:sys
module. - Rework
Conn.new
to accept other protocols. - Added an
InvalidFrameError
for frames unrecognized byFrame.encode_frame
. - Go through the disconnect cycle when there's an error while with the
{:reply, frame, state}
callback response. - Send a close frame with the close code
1011
when there is an unexpected error. (Like anException
in the middle of a callback) - Add a more specific error when the
:websockex
application hasn't been started yet. - Added a
:name
options for local registration.
- Fix a couple of places where the call stack wasn't being properly tail-call optimized.
- Handle system messages and parent exits while closing the connection.
- The output from
:sys.get_status
didn't look pretty in:observer
now it does! format_status/2
now an optional callback.
- SSL frames sent right after connecting will now be handled instead of being left in a dead Task mailbox.
- Fixed some places where
dialyzer
told me I had my specs screwed up.
- The parameters for the
handle_connect/2
callback have been reversed. The order is now(conn, state)
.
- Added initial connection timeouts.
(
:socket_connect_timeout
and:socket_recv_timeout
)- Can be used as
start
orstart_link
option or as aConn.new
option. :socket_connect_timeout
- The timeout for opening a TCP connection.:socket_recv_timeout
- The timeout for receiving a HTTP response header.
- Can be used as
start
andstart_link
can now take aConn
struct in place of a url.- Added the ability to handle system messages while opening a connection.
- Added the ability to handle parent exit messages while opening a connection.
- Improve
:sys.get_status
,:sys.get_state
,:sys.replace_state
functions.- These are undocumented, but are meant primarly for debugging.
- Ensure
terminate/2
callback is called consistently. - Ensure when termination when a parent exit signal is received.
- Add the
system_code_change
function so that thecode_change
callback is actually used.
- Moved all the
WebSockex.Client
module functionality into the baseWebSockex
module. - Roll
handle_connect_failure
functionality intohandle_disconnect
. - Roll
init
functionality intohandle_connect
- Roll
init
functionality intohandle_connect
handle_connect
will be invoked upon establishing any connection, i.e., the intial connection and when reconnecting.- The
init
callback is removed entirely.
- Moved all the
WebSockex.Client
module functionality into the baseWebSockex
module.- Changed the
Application
module toWebSockex.Application
.
- Changed the
- Add
WebSockex.start
for non-linked processes. - Add
async
option tostart
andstart_link
. - Roll
handle_connect_failure
functionality intohandle_disconnect
.- The first parameter of
handle_disconnect
is now a map with the keys::reason
,:conn
, and:attempt_number
. handle_disconnect
now has another return option for when wanted to reconnect with different URI options or headers:{:reconnect, new_conn, new_state}
- Added the
:handle_initial_conn_failure
option to the options forstart
andstart_link
that will allowhandle_disconnect
to be called if we can establish a connection during those functions. - Removed
handle_connect_failure
entirely.
- The first parameter of
Client.start_link
will no longer cause the calling process to exit on connection failure and will return a proper error tuple instead.- Change
WebSockex.Conn.RequestError
toWebSockex.RequestError
. - Add
handle_connect_failure
to be invoked after initiating a connection fails. Fixes #5
- Rework how disconnects are handled which should improve the
handle_disconnect
callback reliability.