Files
tavern/main.go

58 lines
1.2 KiB
Go

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