use hyperlane::*;
async fn tcp_optimized_handler(ctx: Context) {
let socket_addr: String = ctx.get_socket_addr_or_default_string().await;
let request_body: Vec<u8> = ctx.get_request_body().await;
// 使用优化的TCP连接处理请求
let response_data = format!("处理了来自优化连接的 {} 字节: {}",
request_body.len(), socket_addr);
ctx.set_response_status_code(200)
.await
.set_response_body(response_data)
.await;
}
async fn connection_info_handler(ctx: Context) {
let socket_info = get_tcp_connection_info(&ctx).await;
ctx.set_response_status_code(200)
.await
.set_response_header(CONTENT_TYPE, "application/json")
.await
.set_response_body(socket_info)
.await;
}
async fn get_tcp_connection_info(ctx: &Context) -> String {
let addr = ctx.get_socket_addr_or_default_string().await;
format!(r#"{{"client": "{}", "tcp_optimized": true, "nodelay": true, "linger": false}}"#, addr)
}
#[tokio::main]
async fn main() {
let server: Server = Server::new();
server.host("0.0.0.0").await;
server.port(60000).await;
// 关键的TCP优化
server.enable_nodelay().await; // 禁用Nagle算法
server.disable_linger().await; // 立即连接清理
// 缓冲区大小优化
server.http_buffer_size(4096).await;
server.ws_buffer_size(4096).await;
server.route("/tcp-optimized", tcp_optimized_handler).await;
server.route("/connection-info", connection_info_handler).await;
server.run().await.unwrap();
}