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