Skip to content

volo-grpc server能支持配置自定义初始window size吗 #646

@MapleLove2014

Description

@MapleLove2014
Image

这是我在本地启动的一个volo-grpc server,端口50051,用brpc的c++client去调用,本地抓包分析来看:

  1. server配置如下:
......
#[derive(Clone, Default)]
struct HelloSvc;

impl hello_pb::HelloService for HelloSvc {
    async fn hello(
        &self,
        req: Request<hello_pb::HelloRequest>,
    ) -> Result<Response<hello_pb::HelloReply>, Status> {
        let name: &str = req.get_ref().name.as_ref();
        let preview: String = name.chars().take(10).collect();
        println!(
            "Received Hello request: name length={}, preview='{}'",
            name.chars().count(),
            preview
        );
        let ok = is_valid_name(name);
        Ok(Response::new(hello_pb::HelloReply { ok }))
    }
}

fn is_valid_name(name: &str) -> bool {
    !name.trim().is_empty()
}

#[volo::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
    let addr: SocketAddr = "[::]:50051".parse()?;
    let addr = Address::from(addr);

    Server::new()
        .http2_adaptive_window(true)
        .http2_init_connection_window_size(1024u32 * 1024)
        .http2_init_stream_window_size(1024u32 * 1024)
        .http2_max_frame_size(1024u32 * 1024)
        .http2_max_send_buf_size(1024usize * 1024)
        
        .add_service(ServiceBuilder::new(hello_pb::HelloServiceServer::new(HelloSvc)).build())
        .run(addr)
        .await?;

    Ok(())
}
  1. 建立连接后,server向client发送一个No=4的报文,上面的WindowSize是65536
    看着和server配置的http2_init_connection_window_size和http2_init_stream_window_size并不一样,想咨询下是我的用法有问题,还是volo-rpc框架不支持配置

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions