# ws_stream_wasm Changelog

## [Unreleased]

  [Unreleased]: https://github.com/najamelan/ws_stream_wasm/compare/release...dev


## [0.7.4] - 2023-01-29

  [0.7.4]: https://github.com/najamelan/ws_stream_wasm/compare/0.7.3...0.7.4

### Fixed

  - When the `WsMeta::connect` future is dropped, close websocket and unregister callbacks.
    This avoids some ugly error messages in the console. Thanks to @hamchapman for discovering
    and solving the issue and @danielhenrymantilla for reviewing the solution.

### Updated 
  - tokio-util to 0.7 (dev-dependency) 
  - send_wrapper to 0.6


## [0.7.3] - 2021-06-11

  [0.7.3]: https://github.com/najamelan/ws_stream_wasm/compare/0.7.2...0.7.3

### Added

  - on user demand also make `WsStream` `Sync` again.


## [0.7.2] - 2021-06-26

  [0.7.2]: https://github.com/najamelan/ws_stream_wasm/compare/0.7.1...0.7.2

### Added

  - Make `WsStream` `Send` again.


## [0.7.1] - 2021-06-11

  [0.7.1]: https://github.com/najamelan/ws_stream_wasm/compare/0.7.0...0.7.1

### Updated
  - Switch to asynchronous-codec.
  - Remove external_doc feature for nightly 1.54.

## 0.7.0 - 2021-02-17

  - **BREAKING CHANGE**: Update to tokio v1, pharos to 0.5 and async_io_stream to 0.3.
  - **BREAKING CHANGE**: Browsers stopped raising SECURITY_ERR when trying to connect to a [forbidden port](https://stackoverflow.com/questions/4313403/why-do-browsers-block-some-ports/4314070). It now just returns a connection failed, which is indistinguishable from any other network problems, or simply the server not listening on this port. This is an [intended change](https://bugzilla.mozilla.org/show_bug.cgi?id=1684620).
  -


## 0.7.0-beta.1 - 2020-11-03

  - Update to tokio 0.3, will be out of beta when tokio hits 1.0.


## 0.6.1 - 2020-10-02

  - Remove unnecessary `mut` in recent compiler versions. Travis stable on osx is still on 1.44 and will fail until they upgrade.
  - improve readme

## 0.6.0 - 2020-03-21

  - **BREAKING CHANGE**: rename the basic types. `WsStream` is now called `WsMeta` and `WsIo` is now called `WsStream`.
  - **BREAKING CHANGE**: `WsStream` no longer implements `AsyncRead`/`AsyncWrite` directly, you have to call `into_io()`.
  - **BREAKING CHANGE**: The error type is now renamed to `WsErr` and is an enum directly instead of having an error kind.
  - **BREAKING CHANGE**: Fix: `From<MessageEvent> for WsMessage` has become `TryFrom`. This is because things actually could
    go wrong here.

  - Implement tokio `AsyncRead`/`AsyncWrite` for WsStream (Behind a feature flag).
  - delegate implementation of `AsyncRead`/`AsyncWrite`/`AsyncBufRead` to _async_io_stream_. This allows
    sharing the functionality with _ws_stream_tungstenite_, fleshing it out to always fill and use entire buffers,
    polling the underlying stream several times if needed.
  - only build for default target on docs.rs.
  - exclude unneeded files from package build.
  - remove trace and debug statements.
  - `WsMessage` now implements `From<Vec<u8>>` and `From<String>`.
  - `WsMeta` and `WsStream` are now `Send`. You should still only use them in a single thread though. This is fine because
    WASM has no threads, and is sometimes necessary because all the underlying types of _web-sys_ are `!Send`.
  - No longer set a close code if the user doesn't set one.
  - Fix: Make sure `WsStream` continues to function correctly if you drop `WsMeta`.


## 0.5.2 - 2020-01-06

  - fix version of futures-codec because they didn't bump their major version number after making a breaking change.


## 0.5.1 - 2019-11-14

  - update futures to 0.3.1.


## 0.5 - 2019-09-28

  - **BREAKING CHANGE**: update to pharos 0.4. Observable::observe is now fallible, so that is a breaking change for ws_stream_wasm
  - update to futures-codec 0.3


## 0.4.1 - 2019-09-23

  - fix some more errors in the readme

## 0.4.0 - 2019-09-23

  - **BREAKING CHANGE**: use the new filter feature from pharos, making `NextEvent` and `WsEventType` redundant. Those
    types have been removed from the library. The `observe` and method off `WsStream` now takes a `pharos::ObserveConfig` to filter event types. Please refer to the documentation of [pharos](https://docs.rs/pharos) for how to use them.
  - spell check all docs

## 0.3.0 - 2019-09-08

  - drop dependencies on async_runtime and failure and switch to std::error::Error for error handling
  - add a fullstack chat example (still needs documentation and cleanup)

## 0.2.1 - 2019-08-02

  - Fix incorrect link to changelog in readme


## 0.2.0 - 2019-08-02

  - **BREAKING CHANGE**: Fix: Correctly wake up tasks waiting for a next message if the connection gets closed externally.
    This prevents these tasks from hanging indefinitely.
    As a consequence, `WsStream::close` now returns a `Result`, taking into account that if the connection is already
    closed, we don't have the `CloseEvent`. Instead a `WsErr` of kind `WsErrKind::ConnectionNotOpen` is returned.
  - update to async_runtime 0.3
