Files
tavern/main.go

62 lines
1.3 KiB
Go
Raw Normal View History

2023-05-24 16:10:00 +09:00
// warroom project main.go
package main
import (
"context"
"net/http"
2023-08-31 21:02:19 +09:00
"time"
2023-05-24 16:10:00 +09:00
2023-06-21 14:38:26 +09:00
"repositories.action2quare.com/ayo/gocommon/flagx"
2023-05-24 16:10:00 +09:00
"repositories.action2quare.com/ayo/gocommon/wshandler"
"repositories.action2quare.com/ayo/tavern/core"
2023-08-31 21:02:19 +09:00
"repositories.action2quare.com/ayo/gocommon"
2023-05-24 16:10:00 +09:00
"repositories.action2quare.com/ayo/gocommon/logger"
2023-08-31 21:02:19 +09:00
"repositories.action2quare.com/ayo/gocommon/session"
2023-05-24 16:10:00 +09:00
)
2023-06-21 14:38:26 +09:00
var prefix = flagx.String("prefix", "", "")
2023-05-24 16:10:00 +09:00
func main() {
2023-06-21 16:21:19 +09:00
flagx.Parse()
2023-05-24 16:10:00 +09:00
ctx, cancel := context.WithCancel(context.Background())
var config core.TavernConfig
2023-08-31 21:02:19 +09:00
if err := gocommon.LoadConfig(&config); err != nil {
2023-05-24 16:10:00 +09:00
panic(err)
}
2023-08-31 21:02:19 +09:00
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)
2023-05-24 16:10:00 +09:00
if err != nil {
panic(err)
}
if tv, err := core.New(ctx, wsh, &config); err != nil {
panic(err)
} else {
serveMux := http.NewServeMux()
2023-07-10 15:39:56 +09:00
wsh.RegisterHandlers(serveMux, *prefix)
2023-06-21 14:38:26 +09:00
tv.RegisterHandlers(ctx, serveMux, *prefix)
2023-08-31 21:02:19 +09:00
server := gocommon.NewHTTPServer(serveMux)
2023-05-24 16:10:00 +09:00
logger.Println("tavern is started")
2023-07-10 15:39:56 +09:00
wsh.Start(ctx)
2023-05-24 16:10:00 +09:00
server.Start()
cancel()
2023-07-10 15:39:56 +09:00
tv.Cleanup()
wsh.Cleanup()
2023-05-24 16:10:00 +09:00
}
}