ezsockets 0.6.4

WebSockets server & client made easy
Documentation
# ezsockets

Creating a WebSocket server or a client in Rust can be troublesome. This crate facilitates this process by providing:

- Traits to allow declarative and event-based programming.
- Easy concurrency with Tokio and async/await. Server sessions are Clone'able and can be shared between tasks.
- Heartbeat mechanism to keep the connection alive.
- Automatic reconnection of WebSocket Clients.
- Support for arbitrary client back-ends, with built-in native and WASM client connectors.
- Support for multiple server back-ends such as Axum or Tungstenite.
- TLS support for servers with `rustls` and `native-tls`.

## Documentation

View the full documentation at [docs.rs/ezsockets](http://docs.rs/ezsockets)

## Examples
- [`simple-client`]https://github.com/gbaranski/ezsockets/tree/master/examples/simple-client - a simplest WebSocket client which uses stdin as input.
- [`echo-server`]https://github.com/gbaranski/ezsockets/tree/master/examples/echo-server - server that echoes back every message it receives.
- [`echo-server`]https://github.com/gbaranski/ezsockets/tree/master/examples/echo-server-native-tls - same as `echo-server`, but with `native-tls`.
- [`counter-server`]https://github.com/gbaranski/ezsockets/tree/master/examples/counter-server - server that increments global value every second and shares it with client
- [`chat-client`]https://github.com/gbaranski/ezsockets/tree/master/examples/chat-client - chat client for `chat-server` and `chat-server-axum` examples
- [`wasm-client`]https://github.com/gbaranski/ezsockets/tree/master/examples/chat-client-wasm - chat client for `chat-server` and `chat-server-axum` examples that runs in the browser (only listens to the chat)
- [`chat-server`]https://github.com/gbaranski/ezsockets/tree/master/examples/chat-server - chat server with support of rooms
- [`chat-server-axum`]https://github.com/gbaranski/ezsockets/tree/master/examples/chat-server-axum - same as above, but using `axum` as a back-end


## Client

By default clients use [`tokio-tungstenite`](https://github.com/snapview/tokio-tungstenite) under the hood. Disable default features and enable `wasm_client` to run clients on WASM targets.

See [examples/simple-client](https://github.com/gbaranski/ezsockets/tree/master/examples/simple-client) for a simple usage
and [docs.rs/ezsockets/server](https://docs.rs/ezsockets/latest/ezsockets/client/index.html) for documentation.

## Server

WebSocket server can use one of the supported back-ends:
- [`tokio-tungstenite`]https://github.com/snapview/tokio-tungstenite - the simplest way to get started.
- [`axum`]https://github.com/tokio-rs/axum - ergonomic and modular web framework built with Tokio, Tower, and Hyper
- [`actix-web`]https://github.com/actix/actix-web - Work in progress at [#22]https://github.com/gbaranski/ezsockets/issues/22

See [examples/echo-server](https://github.com/gbaranski/ezsockets/tree/master/examples/echo-server) for a simple usage
and [docs.rs/ezsockets/server](https://docs.rs/ezsockets/latest/ezsockets/server/index.html) for documentation.

# License

Licensed under [MIT](https://choosealicense.com/licenses/mit/).

# Contact

Reach me out on Discord `gbaranski#5119`, or mail me at me@gbaranski.com.