workflow-websocket 0.5.3

WebSocket crate (client and server) providing an async Rust API that functions uniformly in native and in browser (WASM32) environments. This crate allows you to develop WebSocket-driven data exchange that function uniformly in web and desktop applications.
Documentation

workflow-websocket

Part of the workflow-rs application framework.


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 client).
  • Trait-based WebSocket server API backed by 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 and Sender async_std channels ([async_channel])(https://docs.rs/async-channel/latest/async_channel/) that can be used to send and receive WebSocket messages asynchronously.

NOTE: to use workflow-websocket in the Node.js environment, you need to introduce a W3C WebSocket object before loading the WASM32 library. You can use any Node.js module that exposes a W3C-compatible WebSocket implementation. Two of such modules are WebSocket (provides a custom implementation) and isomorphic-ws (built on top of the ws WebSocket module).

You can use the following shims:

// WebSocket
globalThis.WebSocket = require('websocket').w3cwebsocket;
// isomorphic-ws
globalThis.WebSocket = require('isomorphic-ws');