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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions