10 个版本
0.3.0 | 2024年7月20日 |
---|---|
0.2.5 | 2022年3月10日 |
0.1.0 | 2020年9月27日 |
0.1.0-alpha.1 | 2020年5月8日 |
0.1.0-alpha.0 | 2020年4月25日 |
#14 在 WebSocket
22,825 每月下载量
用于 7 包
27KB
421 代码行
actix-ws
Actix Web 的 WebSocket,无需 actors。
示例
use actix_web::{middleware::Logger, web, App, HttpRequest, HttpServer, Responder};
use actix_ws::Message;
async fn ws(req: HttpRequest, body: web::Payload) -> actix_web::Result<impl Responder> {
let (response, mut session, mut msg_stream) = actix_ws::handle(&req, body)?;
actix_web::rt::spawn(async move {
while let Some(Ok(msg)) = msg_stream.next().await {
match msg {
Message::Ping(bytes) => {
if session.pong(&bytes).await.is_err() {
return;
}
}
Message::Text(msg) => println!("Got text: {msg}"),
_ => break,
}
}
let _ = session.close(None).await;
});
Ok(response)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(move || {
App::new()
.wrap(Logger::default())
.route("/ws", web::get().to(ws))
})
.bind("127.0.0.1:8080")?
.run()
.await?;
Ok(())
}
资源
许可
本项目采用以下其中一种许可协议:
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖
~14–25MB
~448K SLoC