crusader 1e1e212954 ing
2017-09-01 15:42:23 +09:00

72 lines
1.3 KiB
Go

package main
import (
"context"
"encoding/json"
"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() {
loadConfig()
ctx := newContext()
defer logger.Sync()
s := server.NewServer(ctx)
rp := redis.NewPool(ctx)
gp := grpc.NewPool(ctx)
wsh := handler.NewWebSocketHandler(ctx, gp)
subscribe.Subscribe(ctx, rp.Get())
s.HandleSocket(config.GetString("handlers.web.entry"), wsh)
s.ListenAndServe(config.GetString("server.addr"))
}
func loadConfig() {
config.SetConfigName("config")
config.AddConfigPath(".")
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
}