[−][src]Function actix_ws::handle
pub fn handle(
req: &HttpRequest,
body: Payload
) -> Result<(HttpResponse, Session, MessageStream), Error>
Begin handling websocket traffic
ⓘThis example is not tested
use actix_web::{middleware::Logger, web, App, Error, HttpRequest, HttpResponse, HttpServer}; use actix_ws::Message; async fn ws(req: HttpRequest, body: web::Payload) -> Result<HttpResponse, Error> { let (response, mut session, mut msg_stream) = actix_ws::handle(&req, body)?; actix_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(s) => println!("Got text, {}", s), _ => break, } } let _ = session.close(None).await; }); Ok(response) } #[actix_rt::main] async fn main() -> Result<(), anyhow::Error> { HttpServer::new(move || { App::new() .wrap(Logger::default()) .route("/ws", web::get().to(ws)) }) .bind("127.0.0.1:8080")? .run() .await?; Ok(()) }