mirror of
https://github.com/actix/actix-web.git
synced 2025-03-02 01:21:07 +00:00
For intrepid commit message readers: The choice to add allows for the inlined format args lint instead of actually inlining them is not very clear because our actual real world MSRV is not clear. We currently claim 1.60 is our MSRV but this is mainly due to dependencies. I'm fairly sure that we could support < 1.58 if those deps are outdated in a users lockfile. We'll remove these allows again at some point soon.
65 lines
2 KiB
Rust
65 lines
2 KiB
Rust
//! Actix actors support for Actix Web.
|
|
//!
|
|
//! # Examples
|
|
//!
|
|
//! ```no_run
|
|
//! 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:
|
|
//!
|
|
//! * [Website & User Guide](https://actix.rs/)
|
|
//! * [Documentation for `actix_web`](actix_web)
|
|
//! * [Examples Repository](https://github.com/actix/examples)
|
|
//! * [Community Chat on Discord](https://discord.gg/NWpN5mmg3x)
|
|
//!
|
|
//! 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.
|
|
//!
|
|
|
|
#![deny(rust_2018_idioms, nonstandard_style)]
|
|
#![warn(future_incompatible)]
|
|
#![allow(clippy::uninlined_format_args)]
|
|
|
|
mod context;
|
|
pub mod ws;
|
|
|
|
pub use self::context::HttpContext;
|