3 个版本 (破坏性更新)

0.3.0 2024 年 3 月 4 日
0.2.0 2024 年 1 月 19 日
0.1.0 2023 年 12 月 29 日

#194 in WebSocket

Download history 45/week @ 2024-03-11 10/week @ 2024-03-18 72/week @ 2024-03-25 124/week @ 2024-04-01 7/week @ 2024-04-08 76/week @ 2024-04-15 19/week @ 2024-04-22 61/week @ 2024-04-29 33/week @ 2024-05-06 57/week @ 2024-05-20 2/week @ 2024-05-27 6/week @ 2024-06-03 49/week @ 2024-06-17 86/week @ 2024-06-24

每月 141 次下载
用于 xitca-web

Apache-2.0

62KB
1K SLoC

一个异步 WebSocket crate。

特性

  • 常见的 HTTP 类型和流式接口,易于集成。

要求

  • Rust 1.75
  • httpfutures 用于 HTTP 类型和异步流交互[^1]

[^1]: 请参考项目的 Cargo.toml 文件以获取依赖项版本。


lib.rs:

使用高阶 API 操作 futures_core::Stream 特性的 WebSocket 协议。

HTTP 类型

  • http crate 类型用于输入和输出
  • 支持 http/1.1http/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