gameserver - cmd/gameserver/main.go
1 package main
2
3 import (
4 "context"
5 "flag"
6 "fmt"
7 "net/http"
8 "os"
9 "os/signal"
10
11 "vimagination.zapto.org/gameserver"
12 )
13
14 func main() {
15 if err := run(); err != nil {
16 fmt.Fprintln(os.Stderr, err)
17 os.Exit(1)
18 }
19 }
20
21 func run() error {
22 var dataDir string
23 flag.StringVar(&dataDir, "d", "./data/", "Game Data Directory")
24 flag.Parse()
25 l, err := listen()
26 if err != nil {
27 return err
28 }
29 server := http.Server{
30 Handler: gameserver.New(http.Dir(dataDir)),
31 }
32 go server.Serve(l)
33 sc := make(chan os.Signal, 1)
34 signal.Notify(sc, os.Interrupt)
35 <-sc
36 signal.Stop(sc)
37 close(sc)
38 return server.Shutdown(context.Background())
39 }