Skip to content

Best way to get bytes sent / bytes downloaded from gRPC #2216

Open
@liuliu

Description

@liuliu

Is your feature request related to a problem? Please describe it.

My use case for gPRC is on client - server connection. As such, there are cases client is on unstable connection and customers would benefit from getting better understanding of how long they need to wait for a certain call to complete. As such, we would like to provide feedback on the progress bar for how many bytes sent / how many bytes downloaded on per-frame level. This currently is not possible.

Describe the solution you'd like

There are several ways to implement this. It seems require a bit more thinking. On macOS / iOS platform in particular, it seem implementing custom NWFramerImplementation and insert it into NWParameters would be the most straightforward, but that requires change to SwiftNIOTransportService, a library upstream to grpc-swift.

I also explored some other ways, but it all pointing to changes required in SwiftNIO upstream library.

Describe alternatives you've considered

Alternatively, we can use interceptor, but that is inaccurate and won't reflect how much bytes sent / how much bytes downloaded while a call is still in progress.

Another alternative is to initialize bidirectional streaming call, and support chunking there. But that requires some complications on our gRPC schema itself.

Metadata

Metadata

Assignees

No one assigned

    Labels

    status/triageCollecting information required to triage the issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions