Files
lone-services/bff/bff.go
T
gjs 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
ws
2026-10-08 16:37:33 +08:00

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()
}