gRPC bidi 流服务器可以向它当前未响应的客户端发送消息吗?

Can gRPC bidi streaming server send a message to a client that it is not currently responding to?

gRPC bidi 流媒体服务器可以乱序响应客户端吗?
网络上的所有示例都显示服务器仅响应传入请求。
StreamObserver 接口包含响应请求的实现
onNext方法中,StreamObserver参数是否可以缓存起来,以后再用来发送消息?
我需要什么:
我在第一次请求 Client1
时缓存了 StreamObserver 根据 Client2 的请求,我需要向 Client1

发送一条消息

使用缓存的 StreamObserver 对象会抛出一个 CANCELED 错误,我注意到 onComplete 是为来自 Client1 的第一个请求调用的
有没有办法做到这一点 ?
This 似乎是一个类似的问题,但 2015 年不支持,我不确定现在是否可行

一旦服务器收到 StreamObserver 对客户端的响应,它就可以随时从任何线程调用该对象(尽管该对象不是线程安全的,因此不允许并发调用)。无需将它与 onNext().

中的传入请求结合起来

客户端调用onComplete()正常,没有结束RPC。但是,如果您的代码转向并调用 onComplete(),此时您将无法再在流中发送更多消息。您可能希望观察客户端取消,这可以通过将 StreamObserver 转换为 ServerCallStreamObserver 并在 RPC 开始时调用 setOnCancelHandler(Runnable) 来实现。