Designed for HAWK

Example

```rust use tokio::net::TcpListener;

use httprs::Http; use websocketrs::{ Websocket, Opcode };

[tokio::main]

async fn main() -> Result<(), Box> { let mut listener = TcpListener::bind("127.0.0.1:8080").await?;

println!("Listening for websocket connections on 127.0.0.1:8080");

while let Ok((stream, addr)) = listener.accept().await {
    tokio::spawn(async move {
        println!("New connection from {:?}", addr);

        let mut http = Http::new(stream);

        if let Some(req) = http.next().await {
            if req.for_websocket() {
                let mut ws = Websocket::new_with_key(
                    http.transport.into_inner(),
                    req.headers.get("sec-websocket-key").unwrap().to_string()
                );

                while let Some(msg) = ws.next().await {
                    println!("{:?}", msg);

                    if msg.opcode == Opcode::Text {
                        let response = format!("Received: {:?}", msg.payload);
                        ws.send_text(response).await.unwrap();
                    }
                }

                println!("Client from {:?} disconnected", addr);
            }
        }
    });
}

Ok(())

} ```

TODO