# Slipstream

[![Coverage Status](](
[![ version](](
[![ license](](
[![Last Updated](](

A slick websocket client for Phoenix channels

See the [online documentation](

## Main Features

- backed by [Mint.WebSocket](
- an `await_*` interface for a interacting [synchronously](
- built-in [re-connect and re-join mechanisms]( matching `phoenix.js`
- a [testing framework]( for clients
- emits [`:telemetry` events](

## Installation

Add slipstream to your dependencies in `mix.exs`:

def deps do
    {:slipstream, "~> 0.8"}

> N.B.: Slipstream is still being evaluated and tested in production. Once the
> interface is stable and initial bugs worked out, a v1.0.0 version will be
> published.

## Documentation

Documentation is automatically published to
[]( on release. You may build the
documentation locally with

MIX_ENV=docs mix docs

## Contributing

Issues and PRs are always welcome! See our organization
for more information about best-practices and passing CI.

If you're considering sending a PR or otherwise forking Slipstream, you may
wish to read [the implementation docs](guides/ first.

## Merge-styles

Incoming PRs will be squashed in order to maintain a more readable commit log.
If you'd like your PR to _not_ be squashed, please say so in your PR

PRs which create examples
(e.g. [#17]( will
_not_ be squashed so that the commits may be referenced in the tutorial
section of the example (and not have GitHub's ~annoying~ helpful "This
commit does not belong to any branch on this repository..." message, e.g.