Skip to content

Server基础概念

在Nunu中,我们将HTTPGRPCWebSocketTaskJob等服务都抽象为Server

go
type Server interface {
	Start(context.Context) error
	Stop(context.Context) error
}

每个Server都必须实现Server接口中的方法,也就是Start(ctx)Stop(ctx)

服务依赖注册

在Nunu中,如果你想给你的某个服务进程注册相应的启动服务,

你只需要关心cmd/[服务器名称]/wire/wire.go文件即可。

go
var serverSet = wire.NewSet(
	server.NewHTTPServer,
	server.NewJob,
	// 你想注册的其它服务
)

// build App
func newApp(
	httpServer *http.Server, 
	job *server.Job,
    // 你想注册的其它服务,需要从参数传入
	) *app.App {
	return app.NewApp(
		app.WithServer(httpServer, job),
		app.WithName("demo-server"),
	)
}

func NewWire(*viper.Viper, *log.Logger) (*app.App, func(), error) {

	panic(wire.Build(
		repositorySet,
		serviceSet,
		handlerSet,
		serverSet,  // 集中注册服务
		sid.NewSid,
		jwt.NewJwt,
		newApp,
	))
}

基于 MIT 许可发布