0d8cfc695c
CI / changes (push) Successful in 1m31s
CI / ad (push) Successful in 32s
CI / admin (push) Successful in 22s
CI / bff (push) Successful in 19s
CI / chore (push) Successful in 18s
CI / equipment (push) Successful in 19s
CI / express (push) Successful in 18s
CI / factory (push) Successful in 17s
CI / message (push) Successful in 18s
CI / order (push) Successful in 17s
CI / payment (push) Successful in 17s
CI / percutaneous (push) Successful in 17s
CI / product (push) Successful in 17s
CI / record (push) Successful in 9m26s
CI / sale (push) Successful in 45s
CI / support (push) Successful in 3m8s
CI / task (push) Successful in 27s
CI / user (push) Successful in 21s
CI / wecom (push) Successful in 19s
100 lines
2.4 KiB
Go
100 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"lone-services/bff/internal/config"
|
|
"lone-services/bff/internal/dialer"
|
|
"lone-services/bff/internal/request"
|
|
"lone-services/bff/internal/response"
|
|
"lone-services/bff/internal/wsClient"
|
|
"lone-services/bff/internal/wsproxy"
|
|
"lone-services/pkg/discovery"
|
|
"lone-services/pkg/utils"
|
|
"net/http"
|
|
|
|
"github.com/zeromicro/go-zero/core/conf"
|
|
"github.com/zeromicro/go-zero/core/logx"
|
|
"github.com/zeromicro/go-zero/gateway"
|
|
"github.com/zeromicro/go-zero/rest"
|
|
"github.com/zeromicro/go-zero/zrpc"
|
|
)
|
|
|
|
var configFile = flag.String("f", "etc/bff.yaml", "the config file")
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
|
|
var c config.Config
|
|
conf.MustLoad(*configFile, &c)
|
|
|
|
// Nacos配置拉取初始化
|
|
nacosParam := utils.NacosConfig{
|
|
Hosts: c.Nacos.Hosts,
|
|
NamespaceId: c.Nacos.NamespaceId,
|
|
Group: c.Nacos.Group,
|
|
ConfigID: c.Nacos.ConfigID,
|
|
}
|
|
utils.InitConfig(nacosParam)
|
|
if err := discovery.Init(discovery.Config{
|
|
Hosts: c.Nacos.Hosts,
|
|
NamespaceId: c.Nacos.NamespaceId,
|
|
Group: c.Nacos.Group,
|
|
}); err != nil {
|
|
log.Fatalf("nacos init: %v", err)
|
|
}
|
|
|
|
registerIP := c.Nacos.RegisterIP
|
|
if err := discovery.Register(discovery.Instance{
|
|
ServiceName: c.Name,
|
|
IP: registerIP,
|
|
Port: uint64(c.Port),
|
|
Group: c.Nacos.Group,
|
|
}); err != nil {
|
|
log.Fatalf("nacos register: %v", err)
|
|
}
|
|
defer func() {
|
|
if err := discovery.Deregister(); err != nil {
|
|
log.Printf("nacos deregister: %v", err)
|
|
}
|
|
}()
|
|
|
|
// Gateway 仅处理普通接口 /api /admin,端口 c.Port=10000
|
|
gw := gateway.MustNewServer(c.GatewayConf,
|
|
gateway.WithDialer(dialer.Nacos),
|
|
gateway.WithMiddleware(request.FormUploadMiddleware),
|
|
gateway.WithMiddleware(request.UserReadMiddleware),
|
|
gateway.WithMiddleware(response.Wrap),
|
|
)
|
|
defer gw.Stop()
|
|
|
|
rpcMgr := wsproxy.NewRpcClientManager(c.WsPercutaneousRpc,
|
|
zrpc.WithUnaryClientInterceptor(request.UserClientInterceptor),
|
|
zrpc.WithStreamClientInterceptor(request.UserStreamInterceptor),
|
|
)
|
|
|
|
wsRest := rest.MustNewServer(rest.RestConf{
|
|
Host: c.Host,
|
|
Port: c.WsPort,
|
|
})
|
|
defer wsRest.Stop()
|
|
|
|
// 注册ws路由到独立rest服务
|
|
wsRest.AddRoutes([]rest.Route{
|
|
{
|
|
Method: http.MethodGet,
|
|
Path: "/ws/percutaneous/add/user",
|
|
Handler: wsClient.PercutaneousAddUser(rpcMgr),
|
|
},
|
|
})
|
|
|
|
go func() {
|
|
logx.Info("WS rest server start on :", c.WsPort)
|
|
wsRest.Start()
|
|
}()
|
|
|
|
fmt.Printf("Gateway server at %s:%d\n", c.Host, c.Port)
|
|
gw.Start()
|
|
}
|