补充grpc逻辑
This commit is contained in:
parent
e9b2a72b15
commit
5597e735fc
10
skills/grpc/global/grpc.go
Normal file
10
skills/grpc/global/grpc.go
Normal file
@ -0,0 +1,10 @@
|
||||
package global
|
||||
|
||||
import "google.golang.org/grpc"
|
||||
|
||||
// 1. 示例化一个grpc server对象
|
||||
var Server = grpc.NewServer()
|
||||
|
||||
func Init() {
|
||||
|
||||
}
|
59
skills/grpc/mcube/apps/hello/hello.go
Normal file
59
skills/grpc/mcube/apps/hello/hello.go
Normal file
@ -0,0 +1,59 @@
|
||||
package hello
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"github.com/infraboard/mcube/v2/ioc"
|
||||
grpc_server "github.com/infraboard/mcube/v2/ioc/config/grpc"
|
||||
"gitlab.com/go-course-project/go17/skills/grpc/service"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
func init() {
|
||||
ioc.Controller().Registry(&HelloServiceServer{})
|
||||
}
|
||||
|
||||
type HelloServiceServer struct {
|
||||
service.UnimplementedHelloServiceServer
|
||||
ioc.ObjectImpl
|
||||
}
|
||||
|
||||
func (s *HelloServiceServer) Name() string {
|
||||
return "hello"
|
||||
}
|
||||
|
||||
func (s *HelloServiceServer) Init() error {
|
||||
// 需要拿到全局的 grpc server对象, ioc
|
||||
service.RegisterHelloServiceServer(grpc_server.Get().Server(), &HelloServiceServer{})
|
||||
return nil
|
||||
}
|
||||
|
||||
func (HelloServiceServer) Hello(ctx context.Context, req *service.HelloRequest) (*service.HelloResponse, error) {
|
||||
return &service.HelloResponse{
|
||||
Message: "hello, " + req.MyName,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (HelloServiceServer) Chat(stream grpc.BidiStreamingServer[service.ChatRequest, service.ChatResponse]) error {
|
||||
// 1. 获取用户的请求,然后处理, 处理完成后,通过stream 返回给客户端
|
||||
for {
|
||||
// 接收一个请求
|
||||
req, err := stream.Recv()
|
||||
if err != nil {
|
||||
// 如果遇到io.EOF表示客户端流被关闭
|
||||
if err == io.EOF {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// 2. 处理请求
|
||||
fmt.Println(req.Message)
|
||||
stream.Send(&service.ChatResponse{
|
||||
Id: req.Id,
|
||||
IsSuccess: true,
|
||||
})
|
||||
}
|
||||
}
|
26
skills/grpc/mcube/main.go
Normal file
26
skills/grpc/mcube/main.go
Normal file
@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/infraboard/mcube/v2/ioc"
|
||||
grpc_server "github.com/infraboard/mcube/v2/ioc/config/grpc"
|
||||
|
||||
_ "gitlab.com/go-course-project/go17/skills/grpc/mcube/apps/hello"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// ioc 的初始化
|
||||
ioc.DevelopmentSetup()
|
||||
|
||||
server := grpc_server.Get().Server()
|
||||
|
||||
// 2. 启动grpc服务
|
||||
lis, err := net.Listen("tcp", ":1234")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err := server.Serve(lis); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
@ -46,6 +46,10 @@ func main() {
|
||||
// 1. 示例化一个grpc server对象
|
||||
server := grpc.NewServer()
|
||||
service.RegisterHelloServiceServer(server, &HelloServiceServer{})
|
||||
// service.RegisterHelloServiceServer(server, svc1)
|
||||
// service.RegisterHelloServiceServer(server, svc2)
|
||||
// 全部托管到IOC
|
||||
// Init=> service.RegisterHelloServiceServer(server, &HelloServiceServer{})
|
||||
|
||||
// 2. 启动grpc服务
|
||||
lis, err := net.Listen("tcp", ":1234")
|
||||
|
Loading…
x
Reference in New Issue
Block a user