2 个版本
0.1.1 | 2023 年 10 月 12 日 |
---|---|
0.1.0 | 2023 年 10 月 12 日 |
#209 in WebSocket
在 2 个 Crates 中使用 (通过 gneiss-mqtt)
26KB
445 行
stream-ws
在 WebSocket 上构建的层,支持在原生和 WebAssembly 中携带字节流。
提供可以包装任何 WebSocket 消息流实现的方法,并实现 AsyncRead
、AsyncBufRead
和 AsyncWrite
。
用法
运行 cargo add stream-ws
将其添加到您的 crate 中。
示例在 examples/
。
Tungstenite
使用功能 tungstenite
。
对于来自 crate tokio-tungstenite
或 async-tungstenite
的 WebSocketStream
,使用
let stream = stream_ws::tungstenite::WsByteStream::new(inner)
Gloo (用于 WebAssembly)
使用功能 gloo
。
对于来自 crate gloo
的 WebSocket
使用
let stream = stream_ws::gloo::WsByteStream::new(inner)
包装其他 WebSocket 实现的底层流
您的 WebSocket 实现应该有一个满足 trait 约束的 struct S
。
Stream<Item = Result<Msg, E>> + Sink<Msg, Error = E> + Unpin
其中 Msg
和 E
是实现的消息和错误类型。
创建一个 struct Handler
并实现 WsMessageHandle
,这很简单,然后调用 Handler::wrap_stream(underlying_stream)
来获取 WsByteStream
。
Crates 功能
tokio
: 实现tokio
的AsyncRead
、AsyncBufRead
和AsyncWrite
变体tungstenite
: 来自 cratetungstenite
的消息和错误类型处理器gloo
: 来自 crategloo
的消息和错误类型处理器
许可证:MIT OR Apache-2.0
依赖项
~1–4MB
~80K SLoC