// warroom project main.go package main import ( "context" "net/http" "repositories.action2quare.com/ayo/gocommon/flagx" "repositories.action2quare.com/ayo/gocommon/wshandler" "repositories.action2quare.com/ayo/tavern/core" "repositories.action2quare.com/ayo/gocommon" "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/gocommon/session" ) var prefix = flagx.String("prefix", "", "") func main() { flagx.Parse() ctx, cancel := context.WithCancel(context.Background()) var config core.TavernConfig if err := gocommon.LoadConfig(&config); err != nil { panic(err) } consumer, err := session.NewConsumerWithConfig(ctx, config.SessionConfig) if err != nil { panic(err) } wsh, err := wshandler.NewWebsocketHandler(consumer, config.RedisURL) if err != nil { panic(err) } if tv, err := core.New(ctx, wsh); err != nil { panic(err) } else { serveMux := http.NewServeMux() wsh.RegisterHandlers(serveMux, *prefix) defer wsh.Cleanup() tv.RegisterHandlers(ctx, serveMux, *prefix) defer tv.Cleanup() server := gocommon.NewHTTPServer(serveMux) logger.Println("tavern is started") wsh.Start(ctx) if err := server.Start(); err != nil { logger.Println(err) } cancel() } }