You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 lines
1.4 KiB

package main
import (
clientv3 "go.etcd.io/etcd/client/v3"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/grpclog"
"google.golang.org/grpc/resolver"
"sonet/internal/gateway_ws/server"
"sonet/internal/postal/logic"
"sonet/pkg/config"
"sonet/pkg/grpc/discovery"
"sonet/pkg/grpc/generic"
"sonet/pkg/utils/logger"
"sonet/pkg/utils/shutdown"
)
type GatewayWsConfig struct {
HttpPort int
}
// websocket server with postalService
func main() {
grpclog.SetLoggerV2(logger.Logger)
appConf := &GatewayWsConfig{}
conf := config.LoadConfig(appConf, "cmd/gateway_ws")
// registry and run...
etcdClient, err := clientv3.New(conf.Etcd)
if err != nil {
panic(err)
}
etcdResolver := discovery.NewResolver(etcdClient)
resolver.Register(etcdResolver)
grpcFactory := generic.NewGpcGenericClientFactory(etcdResolver, grpc.WithTransportCredentials(insecure.NewCredentials()))
grpcFactory.Init()
connHandler := server.NewConnHandler(grpcFactory)
httpServer := server.NewHttpServer(connHandler)
go func() {
err = httpServer.Run(appConf.HttpPort)
if err != nil {
panic(err)
}
}()
registry := discovery.NewRegister(etcdClient)
shutdown.AddShutdownHook(registry.Stop)
postalServer := logic.NewPostalServer()
go func() {
err = postalServer.Run(conf.Grpc, registry)
if err != nil {
panic(err)
}
}()
shutdown.Await()
}