2 releases
| 0.1.1 | Oct 12, 2023 |
|---|---|
| 0.1.0 | Oct 12, 2023 |
#277 in WebSocket
Used in 2 crates
(via gneiss-mqtt)
26KB
445 lines
stream-ws
A layer over WebSocket enables carrying byte stream, for both native and WebAssembly.
Providing methods able to wrap any WebSocket message stream implementation,
and impl AsyncRead,
AsyncBufRead
and AsyncWrite.
Usage
run cargo add stream-ws to bring it into your crate.
Examples in examples/.
Tungstenite
With feature tungstenite.
For WebSocketStream in either crate tokio-tungstenite
or async-tungstenite,
use
let stream = stream_ws::tungstenite::WsByteStream::new(inner)
Gloo (for WebAssembly)
With feature gloo.
For WebSocket
in crate gloo
use
let stream = stream_ws::gloo::WsByteStream::new(inner)
Wrapping underlying stream of other WebSocket implementation
Your WebSocket implementation should have a struct S satisfying trait bound
Stream<Item = Result<Msg, E>> + Sink<Msg, Error = E> + Unpin
where Msg and E
are message and error type of the implementation.
Create a struct Handler and impl
WsMessageHandle,
which is easy, and then
call Handler::wrap_stream(underlying_stream)
to get a WsByteStream.
Crate features
tokio: impltokio'sAsyncRead,AsyncBufReadandAsyncWritevariantstungstenite: handlers for message and error type from cratetungstenitegloo: handlers for message and error type from crategloo
License: MIT OR Apache-2.0
Dependencies
~1–8.5MB
~79K SLoC