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)
来实现。
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)
来实现。