From a47557920cfb3e8ec4b5816ae727e9da38cb7ff0 Mon Sep 17 00:00:00 2001 From: "DESKTOP-V763RJ7\\Administrator" <835606593@qq.com> Date: Mon, 19 Jan 2026 10:53:13 +0800 Subject: [PATCH] =?UTF-8?q?feat=20grpc=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 12 +++++++----- module/grpc.go | 34 ++++++++++++++++++++++++++++++++++ net/grpc/service/service.go | 11 ++++++----- 3 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 module/grpc.go diff --git a/config/config.go b/config/config.go index d7388a6..18f14f2 100644 --- a/config/config.go +++ b/config/config.go @@ -53,11 +53,7 @@ type RedisConfig struct { } type ServeConfig struct { - Grpc *struct { - Address string `yaml:"address"` - Port int32 `yaml:"port"` - TTL int64 `yaml:"ttl"` - } `yaml:"grpc"` + Grpc *GrpcConfig `yaml:"grpc"` Socket *struct { Web *AddressConfig `yaml:"web"` Raw *AddressConfig `yaml:"raw"` @@ -65,6 +61,12 @@ type ServeConfig struct { Http *AddressConfig `yaml:"http"` } +type GrpcConfig struct { + Address string `yaml:"address"` + Port int32 `yaml:"port"` + TTL int64 `yaml:"ttl"` +} + type AddressConfig struct { Address string `yaml:"address"` Port int32 `yaml:"port"` diff --git a/module/grpc.go b/module/grpc.go new file mode 100644 index 0000000..641fb32 --- /dev/null +++ b/module/grpc.go @@ -0,0 +1,34 @@ +package module + +import ( + "git.hlsq.asia/mmorpg/service-common/net/grpc/service" +) + +// Grpc Grpc模块 +type Grpc struct { + server service.IService +} + +func (m *Grpc) Init() error { + return nil +} + +func (m *Grpc) Start() error { + m.server.Init() + return nil +} + +func (m *Grpc) Stop() error { + m.server.Close() + return nil +} + +func (m *Grpc) Bind(data ...any) Module { + if data == nil || len(data) == 0 { + return m + } + if ser, ok := data[0].(service.IService); ok { + m.server = ser + } + return m +} diff --git a/net/grpc/service/service.go b/net/grpc/service/service.go index 416fedb..eba14b0 100644 --- a/net/grpc/service/service.go +++ b/net/grpc/service/service.go @@ -2,6 +2,7 @@ package service import ( "fmt" + "git.hlsq.asia/mmorpg/service-common/config" "git.hlsq.asia/mmorpg/service-common/discover" "git.hlsq.asia/mmorpg/service-common/log" "git.hlsq.asia/mmorpg/service-common/utils" @@ -14,7 +15,7 @@ import ( ) type IService interface { - Init(addr string, port int32) + Init() Close() } @@ -23,7 +24,7 @@ type Base struct { ServiceName string SID string Serve *grpc.Server - EtcdTTL int64 + Cfg *config.GrpcConfig OnCustomGrpcServerOption func() []grpc.ServerOption OnInit func(serve *grpc.Server) OnClose func() @@ -31,7 +32,7 @@ type Base struct { wg *sync.WaitGroup } -func (s *Base) Init(addr string, port int32) { +func (s *Base) Init() { s.wg = &sync.WaitGroup{} s.wg.Add(1) s.SID = utils.SnowflakeInstance().Generate().String() @@ -41,7 +42,7 @@ func (s *Base) Init(addr string, port int32) { defer discover.UnRegisterGrpcServer(s.SID) // 监听端口 - lis, err := net.Listen("tcp", fmt.Sprintf(":%d", port)) + lis, err := net.Listen("tcp", fmt.Sprintf(":%d", s.Cfg.Port)) if err != nil { log.Errorf("%v ListenPort err: %v", s.Target, err) return @@ -63,7 +64,7 @@ func (s *Base) Init(addr string, port int32) { s.OnInit(s.Serve) // 服务注册 - if err = discover.RegisterGrpcServer(s.Target, s.SID, fmt.Sprintf("%v:%d", addr, port), s.EtcdTTL); err != nil { + if err = discover.RegisterGrpcServer(s.Target, s.SID, fmt.Sprintf("%v:%d", s.Cfg.Address, s.Cfg.Port), s.Cfg.TTL); err != nil { log.Errorf("%v RegisterGrpcServer err: %v", s.Target, err) return }