#![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(())
}