3 个版本 (破坏性更新)
0.3.0 | 2024 年 3 月 4 日 |
---|---|
0.2.0 | 2024 年 1 月 19 日 |
0.1.0 | 2023 年 12 月 29 日 |
#194 in WebSocket
每月 141 次下载
用于 xitca-web
62KB
1K SLoC
一个异步 WebSocket crate。
特性
- 常见的 HTTP 类型和流式接口,易于集成。
要求
[^1]: 请参考项目的 Cargo.toml
文件以获取依赖项版本。
lib.rs
:
使用高阶 API 操作 futures_core::Stream
特性的 WebSocket 协议。
HTTP 类型
http
crate 类型用于输入和输出- 支持
http/1.1
和http/2
示例
use http::{header, Request, StatusCode};
use http_ws::handshake;
// an incoming http request.
let request = Request::get("/")
.header(header::UPGRADE, header::HeaderValue::from_static("websocket"))
.header(header::CONNECTION, header::HeaderValue::from_static("upgrade"))
.header(header::SEC_WEBSOCKET_VERSION, header::HeaderValue::from_static("13"))
.header(header::SEC_WEBSOCKET_KEY, header::HeaderValue::from_static("some_key"))
.body(())
.unwrap();
let method = request.method();
let headers = request.headers();
// handshake with request and return a response builder on success.
let response_builder = handshake(method, headers).unwrap();
// add body to builder and finalized it.
let response = response_builder.body(()).unwrap();
// response is valid response to websocket request.
assert_eq!(response.status(), StatusCode::SWITCHING_PROTOCOLS);
异步 HTTP 主体
请参考 [ws] 函数
依赖项
~1.6–3MB
~53K SLoC