View Source Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1-0-0-2022-05-11
1.0.0 - 2022-05-11
This release represents stability in the API. There are no functional changes between this release and v0.8.5.
0-8-5-2022-04-26
0.8.5 - 2022-04-26
changed
Changed
- Widened compatibility with
mint_web_socket
to~> 1.0
or~> 0.2
0-8-4-2022-02-17
0.8.4 - 2022-02-17
fixed
Fixed
- Fixed compatibility with
mint_web_socket
v0.2.0
0-8-3-2021-10-07
0.8.3 - 2021-10-07
fixed-1
Fixed
- Fixed connection closing when
Mint.HTTP.stream/2
returns errors- #42 thanks
@parallel588
!
- #42 thanks
0-8-2-2021-10-01
0.8.2 - 2021-10-01
changed-1
Changed
0-8-1-2021-07-06
0.8.1 - 2021-07-06
fixed-2
Fixed
- Properly emit the channel-closed event when
Mint.HTTP.stream/2
returns an error tuple about the connection being closed
0-8-0-2021-07-01
0.8.0 - 2021-07-01
changed-2
Changed
- Switched out
:gun
for Mint.WebSocket as the low-level websocket client
removed
Removed
- Removed the
:gun_open_options
key from configuration- Use the new
:mint_opts
key instead to configure TLS options
- Use the new
added
Added
- Added the
:mint_opts
key to configuration for controlling the options passed toMint.HTTP.connect/4
- Added the
:extensions
key to configuration for specifyingMint.WebSocket.Extension
configuration passed toMint.WebSocket.upgrade/4
0-7-0-2021-06-21
0.7.0 - 2021-06-21
added-1
Added
- Added
Slipstream.handle_leave/2
- This is invoked when the server acknowledges that the client has left the topic
- This was previously invoked as the more generic
Slipstream.handle_topic_close/3
changed-3
Changed
- Topic leaves are now handled not in
Slipstream.handle_topic_close/3
butSlipstream.handle_leave/2
- this is a breaking change
In order to migrate existing code, change any implementations of
Slipstream.handle_topic_close/3
with the reason
of :left
from
def handle_topic_close(_topic, :left, socket)
To
def handle_leave(_topic, socket)
Note that this callback has a default behavior of performing a no-op.
fixed-3
Fixed
- Failures to connect (via an
:error
return fromPhoenix.Socket.connect/3
) now correctly trigger aSlipstream.Events.ChannelConnectFailed
event- when using the synchronous API, this will result in an error tuple with
Slipstream.await_connect/2
in the format of{:error, {:connect_failure, %{resp_headers: resp_headers, status_code: status_code}}}
wherestatus_code
will be403
. - when using the module-based API, this will invoke the
Slipstream.handle_disconnect/2
callback with the same error tuple
- when using the synchronous API, this will result in an error tuple with
0-6-2-2021-03-01
0.6.2 - 2021-03-01
fixed-4
Fixed
await_join!/2
andawait_leave!/2
have been changed toawait_join!/3
andawait_leave!/3
matching their intended usage- the
topic
parameter has been added which coincides with the API ofawait_join/3
andawait_leave/3
- the
0-6-1-2021-02-27
0.6.1 - 2021-02-27
fixed-5
Fixed
- Fixed dialyzer warnings arising from some code macro-injected by
Slipstream.__using__/1
- thanks
@jjcarstens
!
- thanks
0-6-0-2021-02-24
0.6.0 - 2021-02-24
removed-1
Removed
- Removed dependency on Phoenix
0-5-4-2021-02-22
0.5.4 - 2021-02-22
fixed-6
Fixed
- Slipstream will now gracefully handle failures from
:gun.open/3
- errors will result in an invocation of a client's
Slipstream.handle_disconnect/2
callback (if the client is a module) or return an error tuple fromawait_connect/2
in the case of a synchronous client
- errors will result in an invocation of a client's
0-5-3-2021-02-11
0.5.3 - 2021-02-11
changed-4
Changed
- Synchronous functions are now grouped under "Synchronous Functions" in the documentation
0-5-2-2021-02-10
0.5.2 - 2021-02-10
fixed-7
Fixed
- The timer reference for the heartbeat interval is now properly matched upon
in the connection process
- this fixes some behavior where the timer reference would not be canceled
(with
:timer.cancel/1
) upon disconnection - this has not manifested itself as a bug as far as we are aware, but this fix should properly clean up the timer when it is no longer needed
- this fixes some behavior where the timer reference would not be canceled
(with
0-5-1-2021-02-08
0.5.1 - 2021-02-08
added-2
Added
- Added an example guide on how to use GenServer operations for a client
- Added an example on using Slipstream to script interactions with remote
Phoenix.Channel
s
0-5-0-2021-02-07
0.5.0 - 2021-02-07
added-3
Added
- Added
Slipstream.Socket.update/3
which emulatesPhoenix.LiveView.update/3
- Added an example on the rejoin-after-reconnect pattern for clients which dynamically join topics
0-4-4-2021-02-07
0.4.4 - 2021-02-07
fixed-8
Fixed
- Link to post-cutover-metrics image made absolute
0-4-3-2021-02-07
0.4.3 - 2021-02-07
added-4
Added
- Added examples to the documentation
- "Graceful Startup" and "Repeater-style Client"
- Added a note about post-cutover performance changes after we (NFIBrokerage)
cutover to Slipstream in our stack
- This is a new section in the "Why :gun?" guide
- Added documentation on counting the number of Slipstream connection processes
to
Slipstream.ConnectionSupervisor
0-4-2-2021-02-05
0.4.2 - 2021-02-05
fixed-9
Fixed
- Added channel config to socket on
Slipstream.connect/2
orSlipstream.connect!/2
- this fixes an issue reconnecting when faking a connection through
Slipstream.SocketTest.accept_connect/1
- this fixes an issue reconnecting when faking a connection through
0-4-1-2021-02-04
0.4.1 - 2021-02-04
fixed-10
Fixed
- Changed the default behavior of
Slipstream.terminate/2
to disconnect gracefully withSlipstream.disconnect/1
added-5
Added
- Added better documentation on the
Slipstream.terminate/2
callback and how to disconnect in it to leave a connection gracefully
0-4-0-2021-02-04
0.4.0 - 2021-02-04
added-6
Added
- Added telemetry support for clients
- see the telemetry guide for more details
0-3-4-2021-02-04
0.3.4 - 2021-02-04
fixed-11
Fixed
- Fixed spelling and grammar mistakes in the implementation guide
0-3-3-2021-02-04
0.3.3 - 2021-02-04
added-7
Added
- increased documentation around retry mechanisms
- added a page on the choice of
:gun
as the low-level webscket client
0-3-2-2021-02-03
0.3.2 - 2021-02-03
fixed-12
Fixed
- Fixed edge case where the remote server shutting down would not emit a
ChannelClosed
event- this and heartbeats caused the odd
:gun_error
atom from #12
- this and heartbeats caused the odd
0-3-1-2021-02-03
0.3.1 - 2021-02-03
fixed-13
Fixed
- The telemetry event for message handles in the connection process should now
correctly publish the
:events
key, not the:event
key - The telemetry guide now correctly states that the
:start_state
key holds the connection state for handle-style events
added-8
Added
- Published the connection state at the end of the message handle for
handle-type telemetry events in the connection process
- this is published in the
:end_state
key
- this is published in the
0-3-0-2021-02-03
0.3.0 - 2021-02-03
added-9
Added
:telemetry
events are executed for each message handled by theSlipstream.Connection
process- this should aide in debugging in scenarios in which one wants to see the full event history of a connection
0-2-4-2021-02-02
0.2.4 - 2021-02-02
fixed-14
Fixed
- Emit
ChannelClosed
event on HTTP close from remote websocket server- See #11
0-2-3-2021-02-02
0.2.3 - 2021-02-02
changed-5
Changed
- docs: the main page now shows the
Slipstream
module- frankly, I just want people to see the Basic Usage section as soon as possible so they get a taste for the library
0-2-2-2021-02-01
0.2.2 - 2021-02-01
fixed-15
Fixed
- The connection now properly disconnects when the server's heartbeat replies
timeout with requests
- disconnects for this reason will send have
:heartbeat_timeout
as the reason referenced inSlipstream.handle_disconnect/2
- disconnects for this reason will send have
0-2-1-2021-02-01
0.2.1 - 2021-02-01
fixed-16
Fixed
- Connection now correctly emits ChannelClosed events for
:gun
events which occur when a service's network access is terminated
0-2-0-2021-02-01
0.2.0 - 2021-02-01
added-10
Added
- Added a testing framework
Slipstream.SocketTest
0-1-4-2021-01-31
0.1.4 - 2021-01-31
fixed-17
Fixed
- Published license to hex
0-1-3-2021-01-30
0.1.3 - 2021-01-30
changed-6
Changed
- Widened dependency on
:gun
from~> 1.3
to~> 1.0
- as far as I can tell, there aren't any real changes to the websocket interface, so any of these versions should be OK
0-1-2-2021-01-30
0.1.2 - 2021-01-30
added-11
Added
- More documentation
- including a Basic Usage section with a minimalistic example
0-1-1-2021-01-30
0.1.1 - 2021-01-30
removed-2
Removed
- Removed direct dependency on
:telemetry
- see #4
0-1-0-2021-01-30
0.1.0 - 2021-01-30
added-12
Added
- Initial implementation and initial publish
0-0-0-2021-01-22
0.0.0 - 2021-01-22
added-13
Added
- This project was generated by Gaas