Is it a goal of the gRPC transport to support bidirectional streaming? The current limitation of building gRPC clients on top of the ktor HTTP client itself is that it uses the platform specific abstractions for HTTP and, well, I think we all know that iOS hamstrings streaming with URLSession. So, if the kotlinx-rpc gRPC transport is going to just build on ktor HTTP only (vs say ktor Sockets), then we're going to be just as limited in terms of capabilities.
Of course, if you were going to implement full HTTP[/2] support on top of ktor Sockets, I doubt it would be just for this gRPC transport and you'd most likely transition ktor HTTP off the platform specific abstractions onto your full HTTP[/2] implementation, right? 😄 Therefore, I'm pretty sure it's safe to assume that there will not be bidirectional streaming support, but I figured I'd ask.
FWIW, this leaves us in a place where we either bail on gRPC and go in on WebSockets (trying to avoid that) or we end wrapping grpc-swift on top of SwiftNIO. It just feels crazy to have to do that when we're all in on KMP.
Is it a goal of the gRPC transport to support bidirectional streaming? The current limitation of building gRPC clients on top of the ktor HTTP client itself is that it uses the platform specific abstractions for HTTP and, well, I think we all know that iOS hamstrings streaming with
URLSession. So, if thekotlinx-rpcgRPC transport is going to just build on ktor HTTP only (vs say ktor Sockets), then we're going to be just as limited in terms of capabilities.Of course, if you were going to implement full HTTP[/2] support on top of ktor Sockets, I doubt it would be just for this gRPC transport and you'd most likely transition ktor HTTP off the platform specific abstractions onto your full HTTP[/2] implementation, right? 😄 Therefore, I'm pretty sure it's safe to assume that there will not be bidirectional streaming support, but I figured I'd ask.
FWIW, this leaves us in a place where we either bail on gRPC and go in on WebSockets (trying to avoid that) or we end wrapping
grpc-swifton top ofSwiftNIO. It just feels crazy to have to do that when we're all in on KMP.