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