#http #github #opcode #net #tcp-listener #com-euvoor-hawk

nightly http-rs

为 https://github.com/euvoor/hawk 设计

4 个版本

0.1.3 2020年6月17日
0.1.2 2020年6月17日
0.1.1 2020年6月17日
0.1.0 2020年6月17日

#293 in WebSocket

MIT 许可证

13KB
280

HAWK 设计

示例

use tokio::net::TcpListener;

use http_rs::Http;
use websocket_rs::{ Websocket, Opcode };

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    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 {
                println!("{:?}", req);
            }
        });
    }

    Ok(())
}

待办事项

  • 正确处理错误
  • 支持 GET/POST 请求
  • 解析请求行和头
  • 读取 POST 主体
  • 生成适当的响应
  • 处理压缩
  • 从磁盘服务静态文件

依赖项

~8–14MB
~177K SLoC