#websocket-server #server #async-http #uwebsockets #http-server #http

async_uws

基于 uWebSockets 的 Rust 异步 HTTP 和 WebSocket 服务器

26 个版本

0.0.26 2024年2月21日
0.0.25 2023年11月29日
0.0.17 2023年10月27日
0.0.9 2023年9月27日

51WebSocket 中排名

每月 43 次下载

MIT 许可证

45KB
1K SLoC

Rust 异步 HTTP 和 WebSocket 服务器

该服务器基于 uWebSockets 构建,利用 tokio 提供异步运行时支持。适用于需要高性能非阻塞 I/O 操作的 Rust 应用程序。如果您的项目不需要异步编程,您可能考虑使用同步 Rust 服务器。如果您不需要 tokio,您可能对 libuwebsockets_rs 感兴趣——这是一个基于 uWebSockets 的零依赖 Rust 库,与原始包具有相同的 API。

使用方法

要将 uWebSockets 集成到您的 Rust 应用程序中,您必须确保将几个本地库正确链接到您的二进制文件。这些库包括 libzlibuvlibssllibcrypto 以及您系统的适当 C++ 标准库。配置 build.rs

您的 build.rs 脚本应像这样链接这些库

println!("cargo:rustc-link-lib=z");
println!("cargo:rustc-link-lib=uv");
println!("cargo:rustc-link-lib=ssl");
println!("cargo:rustc-link-lib=crypto");

// Conditional linking for C++ standard library based on the target OS
#[cfg(target_os = "macos")]
println!("cargo:rustc-link-lib=c++"); // Use libc++ for macOS
#[cfg(not(target_os = "macos"))]
println!("cargo:rustc-link-lib=stdc++"); // Use libstdc++ for other systems

设置您的环境

macOS 用户

在 macOS 上,您可能需要指定链接器查找 libuvlibc 的包含路径和库路径。您可以通过在 shell 中设置环境变量来完成此操作

export LIBRARY_PATH="/opt/homebrew/lib:$LIBRARY_PATH"
export C_INCLUDE_PATH="/opt/homebrew/include:$C_INCLUDE_PATH"
export CPLUS_INCLUDE_PATH="/opt/homebrew/include:$CPLUS_INCLUDE_PATH"

如果 libuv 在您系统中的其他位置安装,请将 /opt/homebrew/lib/opt/homebrew/include 替换为实际路径。

Linux 用户

在 Linux 上,请确保通过您的发行版的包管理器安装了 libuvlibssllibcrypto,并且系统上可用的 libstdc 库。

Windows 用户

遗憾的是,此库目前不支持 Windows,但请不要犹豫,在 libuwebsockets-sys crate build 脚本 中为 Windows 支持提交 PR

故障排除

如果在编译过程中遇到错误,例如找不到头文件(例如,未找到 uv.h)或链接问题(例如,找不到 -luv 的库),请按照以下步骤操作:

  • 请确认所有必需的库都已安装,并且可以在系统库和包含路径中访问。
  • 在运行 cargo build 之前,请确保环境变量已正确设置。
  • 使用 cargo clean 删除任何过时的构建输出,然后使用 cargo build 重新编译项目。
  • 为了获得有助于诊断构建问题的详细输出,请运行 cargo build -vv

贡献

如果您遇到任何问题或想提出改进建议,请在存储库中打开一个问题或拉取请求。您的贡献将有助于使此项目更加健壮,并使 Rust 社区更容易使用。

依赖项

~3–11MB
~113K SLoC