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

0-8-2-2021-10-01

0.8.2 - 2021-10-01

changed-1

Changed

  • Expanded dependency on :telemetry to allow ~> 1.0

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

added

Added

0-7-0-2021-06-21

0.7.0 - 2021-06-21

added-1

Added

changed-3

Changed

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 from Phoenix.Socket.connect/3) now correctly trigger a Slipstream.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}}} where status_code will be 403.
    • when using the module-based API, this will invoke the Slipstream.handle_disconnect/2 callback with the same error tuple

0-6-2-2021-03-01

0.6.2 - 2021-03-01

fixed-4

Fixed

  • await_join!/2 and await_leave!/2 have been changed to await_join!/3 and await_leave!/3 matching their intended usage
    • the topic parameter has been added which coincides with the API of await_join/3 and await_leave/3

0-6-1-2021-02-27

0.6.1 - 2021-02-27

fixed-5

Fixed

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 from await_connect/2 in the case of a synchronous client

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

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.Channels

0-5-0-2021-02-07

0.5.0 - 2021-02-07

added-3

Added

  • Added Slipstream.Socket.update/3 which emulates Phoenix.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

0-4-1-2021-02-04

0.4.1 - 2021-02-04

fixed-10

Fixed

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

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

0-3-0-2021-02-03

0.3.0 - 2021-02-03

added-9

Added

  • :telemetry events are executed for each message handled by the Slipstream.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

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

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

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