## `workflow-websocket`
Part of the [`workflow-rs`](https://github.com/workflow-rs) application framework.
***
[](https://github.com/workflow-rs/workflow-websocket)
[](https://crates.io/crates/workflow-websocket)
[](https://docs.rs/workflow-websocket)
Platform-neutral WebSocket Client and native Server.
## Features
* Uniform async Rust WebSocket client API that functions in the browser environment (backed by browser `WebSocket` class) as well as on native platforms (backed by [Tungstenite](https://crates.io/crates/async-tungstenite) client).
* Trait-based WebSocket server API backed by [Tungstenite](https://crates.io/crates/async-tungstenite) server.
This crate allows you to develop a WebSocket client that will work uniformly in in hte native environment and in-browser.
Workflow-WebSocket crate is currently (as of Q3 2022) one of the few available async Rust client-side in-browser WebSocket implementations.
This web socket crate offers an async message send API as well as provides access to [Receiver](https://docs.rs/async-channel/latest/async_channel/struct.Receiver.html) and [Sender](https://docs.rs/async-channel/latest/async_channel/struct.Sender.html) async_std channels ([async_channel])(https://docs.rs/async-channel/latest/async_channel/) that can be used to send and receive WebSocket messages asynchronously.
To use `workflow-websocket` in the Node.js environment, you need to introduce a W3C WebSocket object before loading the WASM32 library
to simulate the global `WebSocket` object available in Web Browsers.
The [WebSocket](https://www.npmjs.com/package/websocket) NPM module provides W3C WebSocket compatible implementation and can
be used as follows:
```
// WebSocket
globalThis.WebSocket = require('websocket').w3cwebsocket;
// Load WASM32 library ...
```