// warroom project main.go package main import ( "context" "net/http" "time" "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) } if len(config.SessionStorage) == 0 { panic("maingate_session_storage is missing") } if config.SessionTTL == 0 { config.SessionTTL = 3600 } consumer, err := session.NewConsumer(ctx, config.SessionStorage, time.Duration(config.SessionTTL)*time.Second) if err != nil { panic(err) } wsh, err := wshandler.NewWebsocketHandler(consumer) if err != nil { panic(err) } if tv, err := core.New(ctx, wsh, &config); err != nil { panic(err) } else { serveMux := http.NewServeMux() wsh.RegisterHandlers(serveMux, *prefix) tv.RegisterHandlers(ctx, serveMux, *prefix) server := gocommon.NewHTTPServer(serveMux) logger.Println("tavern is started") wsh.Start(ctx) server.Start() cancel() tv.Cleanup() wsh.Cleanup() } }