我是一个大二学生,最近在做一个课程设计:要求用 Rust 实现一个支持 WebSocket 实时群聊和私聊的后端。室友用的是 axum
+ tokio-tungstenite
,我本来也打算跟着抄,但是一看 axum 的 WebSocket 那堆 boilerplate,直接把我吓退了。
直到我刷到了一个项目叫 hyperlane
,居然是国产开源的 Rust Web 框架,而且自带 WebSocket 插件!我抱着试一试的心态用了两个晚上写完,测试跑起来之后只能说:太强了,真的太强了!
看清楚了,我只是个学生,不是那种「能读懂一堆宏 + 生命周期」的 Rust 大师,我选框架只有一个标准:
能跑、好懂、好调试、性能不差就行!
然后我对比了几款主流框架:
框架 | WebSocket 支持 | 上手难度 | 文档友好度 | 性能表现 | 特性 |
---|---|---|---|---|---|
axum |
需集成外部库 | ❌ 一堆宏 + Tower 很难啃 | 中等 | 优秀 | 全家桶生态好,但偏重 |
actix-web |
内建 WS 支持 | ❌ actor 模型门槛高 | 一般 | 极优 | 高性能但概念复杂 |
warp |
有支持,但语法偏函数式 | ❌ 理解 filter 模型需时间 | 一般 | 较好 | 很 FP,但不适合新手 |
✅ hyperlane |
✅ 开箱即用内置插件 | ✅ 几乎 0 学习成本! | ✅ 中文文档 + 例子全 | ✅ 超轻高性能 | ✅ WebSocket、SSE、middleware 一应俱全! |
上手直接 cargo add hyperlane
+ cargo add hyperlane-plugin-websocket
,一行就能装好。
连 WebSocket 的广播、点对点通信、断开处理都已经封装好了,写个群聊路由就是下面这样:
server
.route("/{group_name}", group_chat_route)
.await;
然后处理函数里就是:
get_broadcast_map()
.run(&ctx, 1024, key, group_chat, sended, group_closed)
.await;
是不是就两个词能形容:爽爆了!
我用 wrk
测了一下:
我室友用 axum 写了两天还卡在 WS session 管理,我早就部署到服务器收数据了(笑)。
用 Rust 写服务最怕的就是框架太重、抽象太深。但 hyperlane
简直像是给学生量身定制的:
如果你是学生、个人开发者、或只是想写个 demo 快速验证想法,请一定试试 Hyperlane!
用完你可能会和我一样:再也不想手搓 tokio + 乱七八糟库了!
项目地址:
官方文档: