跳到主要内容

gRPC servicer

Service definition

service keyword來定義一個新的gRPC service。

service RouteGuide {
...
}

RPC definition

rpc keyword來定義一個remote procedure call。

# simple RPC
rpc GetFeature(Point) returns (Feature) {}

# server-to-client streaming
rpc ListFeatures(Rectangle) returns (stream Feature) {}

# client-to-server streaming
rpc RecordRoute(stream Point) returns (RouteSummary) {}

# bidirectional streaming
rpc RouteChat(stream RouteNote) returns (stream RouteNote) {}

RPC type

  • simple RPC: client丟一個message給server,server回一個message給client。
  • client-to-server streaming:client會丟複數個message給server直到EOF,然後等待server回傳一個message。
  • server-to-client streaming: client送一個message給server,server會回傳複數個message給client。
  • bidrectional streaming: 雙方都預期會收到複數個message,直到收到EOF。