Struct hyper::header::Upgrade [] [src]

pub struct Upgrade(pub Vec<Protocol>);

Upgrade header, defined in RFC7230

The Upgrade header field is intended to provide a simple mechanism for transitioning from HTTP/1.1 to some other protocol on the same connection. A client MAY send a list of protocols in the Upgrade header field of a request to invite the server to switch to one or more of those protocols, in order of descending preference, before sending the final response. A server MAY ignore a received Upgrade header field if it wishes to continue using the current protocol on that connection. Upgrade cannot be used to insist on a protocol change.

ABNF

Upgrade          = 1#protocol

protocol         = protocol-name ["/" protocol-version]
protocol-name    = token
protocol-version = token

Example values

  • HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

Examples

use hyper::header::{Headers, Upgrade, Protocol, ProtocolName};

let mut headers = Headers::new();
headers.set(Upgrade(vec![Protocol::new(ProtocolName::WebSocket, None)]));
use hyper::header::{Headers, Upgrade, Protocol, ProtocolName};

let mut headers = Headers::new();
headers.set(
    Upgrade(vec![
        Protocol::new(ProtocolName::Http, Some("2.0".to_owned())),
        Protocol::new(ProtocolName::Unregistered("SHTTP".to_owned()),
            Some("1.3".to_owned())),
        Protocol::new(ProtocolName::Unregistered("IRC".to_owned()),
            Some("6.9".to_owned())),
    ])
);