mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
|
|
pb "grpcexample/helloworld"
|
|
|
|
"github.com/kataras/iris/v12"
|
|
"github.com/kataras/iris/v12/mvc"
|
|
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
type Greeter struct {
|
|
pb.UnimplementedGreeterBidirectionalStreamServer
|
|
}
|
|
|
|
// SayHello implements the proto Bidirectional Stream Greeter service.
|
|
func (g *Greeter) SayHello(stream pb.GreeterBidirectionalStream_SayHelloServer) error {
|
|
for {
|
|
in, err := stream.Recv()
|
|
if err == io.EOF {
|
|
return nil
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
println("Received input: " + in.Name)
|
|
// On client side you can implement the 'read' operation too.
|
|
stream.Send(&pb.HelloReply{Message: "Hello " + in.Name})
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
app := iris.New()
|
|
|
|
grpcServer := grpc.NewServer()
|
|
|
|
myService := &Greeter{}
|
|
pb.RegisterGreeterBidirectionalStreamServer(grpcServer, myService)
|
|
|
|
rootApp := mvc.New(app)
|
|
rootApp.Handle(myService, mvc.GRPC{
|
|
Server: grpcServer, // Required.
|
|
ServiceName: "helloworld.GreeterBidirectionalStream", // Required.
|
|
Strict: true, // Set it to true on gRPC streaming.
|
|
})
|
|
|
|
app.Run(iris.TLS(":443", "../server.crt", "../server.key"))
|
|
}
|