1

在聊天服务中,我们从客户端获取请求并根据它发送响应。但我的情况是,服务器必须从类的外部方法发送一些不同的对象。

例如,

public StreamObserver<SalaryDetails> message(StreamObserver<Employee> responseObserver) {
    observers.add(responseObserver);

    return new StreamObserver<SalaryDetails>() {

        @Override
        public void onCompleted() {
            observers.remove(responseObserver); 
        }

        @Override
        public void onError(Throwable arg0) {
            observers.remove(responseObserver); 
        }

        @Override
        public void onNext(SalaryDetails details) {
            for(StreamObserver<MetricsToVE> observer : observers) {
                **observer.onNext(Employee.newBuilder()
                    .setName("AA")
                    .setCity("B")
                    .build());**
            }
        }
    };
}

在下面的语句中,我对字段进行了硬编码,我应该如何将对象从不同的方法传递到 grpc 服务类。

4

1 回答 1

0

这取决于为什么响应值会有所不同:

  1. 如果客户端可以根据请求预测响应类型,那么您可能应该让客户端根据类型调用不同的方法
  2. 如果可能的选项对 API 来说是众所周知的,那么您可以使用protobuf 的oneof.
  3. 如果数据是任意的,那么你可以使用protobuf 的Any

似乎#2很可能是您的情况。

于 2017-08-10T19:48:41.087 回答