环境
google.golang.org/grpc v1.47.0
google.golang.org/protobuf v1.28.0
文件目录
proto 文件
syntax = "proto3";
package stream.v1;
option go_package = "goGinT/rpc/stream/v1;streamProto";
message StreamReqData {
string data = 1;
}
message StreamResData {
string data = 1;
}
service Greeter {
rpc GetStream(StreamReqData) returns (stream StreamResData);
rpc PutStream(stream StreamReqData) returns (StreamResData);
rpc AllStream(stream StreamReqData) returns (stream StreamResData);
}
客户端
package main
import (
"context"
"fmt"
streamProto "goGinT/rpc/stream/proto"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"sync"
"time"
)
func getStream(c streamProto.GreeterClient) {
res, err := c.GetStream(context.Background(), &streamProto.StreamReqData{
Data: "一个大胖子",
})
if err != nil {
return
}
for {
recv, err := res.Recv()
if err != nil {
fmt.Println(err)
break
}
fmt.Println(recv.Data)
}
}
func putStre