按照我理解的问题.您希望将消息发送到gRPC中的特定客户端.这在gRPC中使用Server side streaming
或Bi-directional
流式传输非常有用.
例如:
定义服务器端流式传输或bidi流式传输API
rpc ListFeatures(Rectangle) returns (stream Feature) {}
Run Code Online (Sandbox Code Playgroud)
在服务器端:
func ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error {
// Save this stream instance in the server on a map or other suitable data structure
// so that you can query for this stream instance later
// This will act same like your websocket session
}
Run Code Online (Sandbox Code Playgroud)
当您想要向特定客户端发送内容时,请获取流实例并执行此操作
err := stream.Send(feature); // Any times as required
Run Code Online (Sandbox Code Playgroud)
在客户端,它将等待这样的消息
stream, err := client.ListFeatures(ctx, rect)
for {
feature, err := stream.Recv()
...
// handle message here
}
Run Code Online (Sandbox Code Playgroud)
对于bidi流式传输rpc也可以做同样的事情.我希望这回答了你的问题
归档时间: |
|
查看次数: |
516 次 |
最近记录: |