31 releases (11 stable)
4.3.0 | Feb 4, 2024 |
---|---|
4.2.0 | Jan 21, 2023 |
4.1.0 | Mar 2, 2022 |
4.0.0-beta.9 | Dec 27, 2021 |
1.0.0-alpha.2 | Mar 30, 2019 |
#858 in Network programming
90,433 downloads per month
Used in 115 crates
(83 directly)
1.5MB
33K
SLoC
actix-web-actors
Actix actors support for Actix Web.
Documentation & Resources
- API Documentation
- Minimum Supported Rust Version (MSRV): 1.68
lib.rs
:
Actix actors support for Actix Web.
Examples
use actix::{Actor, StreamHandler};
use actix_web::{get, web, App, Error, HttpRequest, HttpResponse, HttpServer};
use actix_web_actors::ws;
/// Define Websocket actor
struct MyWs;
impl Actor for MyWs {
type Context = ws::WebsocketContext<Self>;
}
/// Handler for ws::Message message
impl StreamHandler<Result<ws::Message, ws::ProtocolError>> for MyWs {
fn handle(&mut self, msg: Result<ws::Message, ws::ProtocolError>, ctx: &mut Self::Context) {
match msg {
Ok(ws::Message::Ping(msg)) => ctx.pong(&msg),
Ok(ws::Message::Text(text)) => ctx.text(text),
Ok(ws::Message::Binary(bin)) => ctx.binary(bin),
_ => (),
}
}
}
#[get("/ws")]
async fn index(req: HttpRequest, stream: web::Payload) -> Result<HttpResponse, Error> {
ws::start(MyWs, &req, stream)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| App::new().service(index))
.bind(("127.0.0.1", 8080))?
.run()
.await
}
Documentation & Community Resources
In addition to this API documentation, several other resources are available:
To get started navigating the API docs, you may consider looking at the following pages first:
-
[
ws
]: This module provides actor support for WebSockets. -
HttpContext
: This struct provides actor support for streaming HTTP responses.
Dependencies
~16–30MB
~516K SLoC