pub struct HyperRequest<'a, 'b: 'a>(pub Request<'a, 'b>);
Upgrade a hyper connection to a websocket one.
A hyper request is implicitly defined as a stream from other impl
s of Stream.
Until trait impl specialization comes along, we use this struct to differentiate
a hyper request (which already has parsed headers) from a normal stream.
Using this method, one can start a hyper server and check if each request
is a websocket upgrade request, if so you can use websockets and hyper on the
same port!
use hyper::server::{Server, Request, Response};
use websocket::Message;
use websocket::sync::server::upgrade::IntoWs;
use websocket::sync::server::upgrade::HyperRequest;
Server::http("0.0.0.0:80").unwrap().handle(move |req: Request, res: Response| {
match HyperRequest(req).into_ws() {
Ok(upgrade) => {
let mut client = match upgrade.accept() {
Ok(c) => c,
Err(_) => panic!(),
};
client.send_message(&Message::text("its free real estate"));
},
Err((request, err)) => {
res.send(b"Try connecting over ws instead.").unwrap();
},
};
})
.unwrap();
The type of stream this upgrade process is working with (TcpStream, etc.)
An error value in case the stream is not asking for a websocket connection or something went wrong. It is common to also include the stream here. Read more
Attempt to parse the start of a Websocket handshake, later with the returned WsUpgrade
struct, call accept
to start a websocket client, and reject
to send a handshake rejection response. Read more
The type of stream this upgrade process is working with (TcpStream, etc.)
An error value in case the stream is not asking for a websocket connection or something went wrong. It is common to also include the stream here. Read more
Attempt to parse the start of a Websocket handshake, later with the returned WsUpgrade
struct, call accept
to start a websocket client, and reject
to send a handshake rejection response. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
impl<T> Typeable for T where T: Any, | |
Get the TypeId
of this object.