zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
use actix_web::{web, Error, HttpRequest, HttpResponse};

use tokio::task::spawn_local;

use super::ChatServerHandle;

/// Handshake and start WebSocket handler with heartbeats.
pub async fn ws(
    req: HttpRequest,
    stream: web::Payload,
    chat_server: web::Data<ChatServerHandle>,
) -> Result<HttpResponse, Error> {
    let (res, session, msg_stream) = actix_ws::handle(&req, stream)?;

    // spawn websocket handler (and don't await it) so that the response is returned immediately
    spawn_local(super::chat_ws((**chat_server).clone(), session, msg_stream));

    Ok(res)
}