项目初始化
环境准备
建议开启GO111MODULE
go env -w GO111MODULE=on
开启 Go Module 特性并使用代理
export GO111MODULE=on GOPROXY=https://goproxy.cn;
初始化项目
go mod init 项目名称
添加缺失的并删除未使用的模块
go mod tidy
安装
go get -u github.com/camry/dove
使用
package main
import (
"log"
"context"
"github.com/camry/dove"
"github.com/camry/dove/server/gcron"
"github.com/camry/dove/server/ghttp"
"github.com/camry/dove/server/grpc"
"github.com/camry/dove/server/gtcp"
"github.com/camry/dove/server/gudp"
ggtcp "github.com/camry/g/gnet/gtcp"
ggudp "github.com/camry/g/gnet/gudp"
)
func main() {
hs := ghttp.NewServer()
gs := grpc.NewServer()
gc := gcron.NewServer()
tcp := gtcp.NewServer(gtcp.Handler(func(conn *ggtcp.Conn) {
}))
udp := gudp.NewServer(gudp.Handler(func(conn *ggudp.Conn) {
}))
app := dove.New(
dove.Name("dove"),
dove.Version(dove.Release),
dove.Server(hs, gs, gc, tcp, udp),
dove.BeforeStart(func(_ context.Context) error {
log.Println("BeforeStart...")
return nil
}),
dove.BeforeStop(func(_ context.Context) error {
log.Println("BeforeStop...")
return nil
}),
dove.AfterStart(func(_ context.Context) error {
log.Println("AfterStart...")
return nil
}),
dove.AfterStop(func(_ context.Context) error {
log.Println("AfterStop...")
return nil
}),
)
if err := app.Run(); err != nil {
log.Fatal(err)
}
}