1
0
mirror of https://github.com/actix/actix-extras.git synced 2025-01-24 07:43:49 +01:00
2017-12-02 00:36:50 -08:00

1.4 KiB

HTTP/2

Actix web automatically upgrades connection to http/2 if possible.

Negotiation

HTTP/2 protocol over tls without prior knowlage requires tls alpn. At the moment only rust-openssl has support. Turn on alpn feature to enable alpn negotiation. With enable alpn feature HttpServer provides serve_tls method.

[dependencies]
actix-web = { git = "https://github.com/actix/actix-web", features=["alpn"] }
use std::fs::File;
use actix_web::*;

fn main() {
    let mut file = File::open("identity.pfx").unwrap();
    let mut pkcs12 = vec![];
    file.read_to_end(&mut pkcs12).unwrap();
    let pkcs12 = Pkcs12::from_der(&pkcs12).unwrap().parse("12345").unwrap();

    HttpServer::new(
        Application::default("/")
            .handler("/index.html", index)
        .serve_tls::<_, ()>("127.0.0.1:8080", pkcs12).unwrap();
}

Upgrade to http/2 schema described in rfc section 3.2 is not supported. Starting http/2 with prior knowledge is supported for both clear text connection and tls connection. rfc section 3.4

Please check example for concrete example.