2017-09-08 13:53:16 +09:00

77 lines
1.4 KiB
Go

package main
import (
"context"
"encoding/json"
"flag"
"log"
"go.uber.org/zap"
"git.loafle.net/commons_go/config"
"git.loafle.net/commons_go/logging"
"git.loafle.net/overflow/overflow_gateway_web/grpc"
"git.loafle.net/overflow/overflow_gateway_web/handler"
"git.loafle.net/overflow/overflow_gateway_web/redis"
"git.loafle.net/overflow/overflow_gateway_web/server"
"git.loafle.net/overflow/overflow_gateway_web/subscribe"
)
var logger *zap.Logger
func main() {
configPath := flag.String("config", ".", "The path of config file")
flag.Parse()
loadConfig(*configPath)
ctx := newContext()
defer logger.Sync()
s := server.NewServer(ctx)
rp := redis.NewPool(ctx)
grpc.InitializePool(ctx)
wsh := handler.NewWebSocketHandler(ctx)
subscribe.Subscribe(ctx, rp.Get())
s.HandleSocket(config.GetString("handlers.web.entry"), wsh)
s.ListenAndServe(config.GetString("server.addr"))
}
func loadConfig(path string) {
config.SetConfigName("config")
config.AddConfigPath(path)
err := config.ReadInConfig()
if nil != err {
log.Fatalf("config error: %v", err)
}
}
func newContext() context.Context {
var err error
ctx := context.Background()
logConfig := config.Sub("logging")
buf, err := logConfig.Marshal("json")
if err != nil {
panic(err)
}
var cfg zap.Config
if err = json.Unmarshal(buf, &cfg); err != nil {
panic(err)
}
logger, err = cfg.Build()
if err != nil {
panic(err)
}
ctx = logging.NewContext(ctx, logger)
return ctx
}