hyper-websocket-lite 0.5.0

WebSocket server implementation on hyper and websocket-lite
Documentation
#![deny(rust_2018_idioms)]

use std::env;

use futures::SinkExt;
use hyper::service::{make_service_fn, service_fn};
use hyper::Server;
use hyper_websocket_lite::{server_upgrade, AsyncClient};
use websocket_codec::{Message, Result};

async fn on_client(mut client: AsyncClient) {
    let _ = client.send(Message::text("Hello, world!")).await;
    let _ = client.send(Message::close(None)).await;
}

#[tokio::main]
async fn main() -> Result<()> {
    let port = env::args().nth(1).unwrap_or_else(|| "9001".to_owned()).parse()?;
    let addr = ([0, 0, 0, 0], port).into();

    let make_service =
        make_service_fn(|_| async { Ok::<_, hyper::Error>(service_fn(|req| server_upgrade(req, on_client))) });

    Server::bind(&addr).serve(make_service).await?;
    Ok(())
}