mirror of
https://github.com/actix/actix-extras.git
synced 2025-08-30 19:10:20 +02:00
* build(deps): bump deadpool-redis from 0.20.0 to 0.21.1 Bumps [deadpool-redis](https://github.com/bikeshedder/deadpool) from 0.20.0 to 0.21.1. - [Changelog](https://github.com/deadpool-rs/deadpool/blob/master/CHANGELOG.md) - [Commits](https://github.com/bikeshedder/deadpool/compare/deadpool-redis-v0.20.0...deadpool-redis-v0.21.1) --- updated-dependencies: - dependency-name: deadpool-redis dependency-version: 0.21.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * Update redis crate * Update MSRV --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
actix-ws
WebSockets for Actix Web, without actors.
Example
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.recv().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(())
}
Resources
- API Documentation
- Example Chat Project
- Minimum Supported Rust Version (MSRV): 1.80
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.