Function routerify_ws::upgrade_ws_with_config_and_req[][src]

pub fn upgrade_ws_with_config_and_req<H, R, B, E>(
    handler: H,
    config: WebSocketConfig
) -> impl Fn(Request<Body>) -> Ready<Result<Response<B>, E>> + Send + 'static where
    H: Fn(Request<Body>, WebSocket) -> R + Clone + Send + Sync + 'static,
    R: Future<Output = ()> + Send + 'static,
    B: From<&'static str> + HttpBody + Send + 'static,
    E: Error + Send + 'static, 
Expand description

Upgrades the http requests to websocket with the provided config and adds request to the handler to be able to use extensions.

Examples

use routerify_ws::{upgrade_ws_with_config_and_req, WebSocket, WebSocketConfig};

async fn ws_handler(req:Request<Body>,ws: WebSocket) {

    println!("New websocket connection: {} {:?}", ws.remote_addr(),req.headers());
    // Handle websocket connection.
}

fn router() -> Router<Body, Infallible> {
    // Create a router and specify the path and the handler for new websocket connections.
    Router::builder()
        // Upgrade the http requests at `/ws` path to websocket with the following config.
        .any_method("/ws", upgrade_ws_with_config_and_req(ws_handler, WebSocketConfig::default()))
        .build()
        .unwrap()
}