Follow the leader with help from a server
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
Repozitorijs ir arhivēts. Tam var aplūkot failus un to var klonēt, bet nevar iesūtīt jaunas izmaiņas, kā arī atvērt jaunas problēmas/izmaiņu pieprasījumus.

62 rindas
1.1KB

  1. // NGnius 2020-01-30
  2. package main // leadercraft-server
  3. import (
  4. "fmt"
  5. "net/http"
  6. "os"
  7. "os/signal"
  8. )
  9. const (
  10. // Version the current version
  11. Version = "0.1"
  12. // Name the program name
  13. Name = "leadercraft-s"
  14. )
  15. var (
  16. server *http.Server
  17. handler http.Handler
  18. port string
  19. root string
  20. isClosing bool
  21. )
  22. func init() {
  23. initArgs()
  24. serverMux := http.NewServeMux()
  25. serverMux.HandleFunc("/load", boardHandler)
  26. handler = serverMux
  27. }
  28. func main() {
  29. parseArgs()
  30. sqlInitErr := sqlInit()
  31. if sqlInitErr != nil {
  32. fmt.Printf("Failed to initialise SQL connection: %s\n", sqlInitErr)
  33. os.Exit(1)
  34. }
  35. // handle interrupt (terminate) signal
  36. signalChan := make(chan os.Signal, 1)
  37. signal.Notify(signalChan, os.Interrupt)
  38. go func() {
  39. s := <-signalChan
  40. fmt.Println("Received terminate signal " + s.String())
  41. isClosing = true
  42. sqlClose()
  43. server.Close()
  44. }()
  45. server = &http.Server{
  46. Addr: ":" + port,
  47. Handler: handler,
  48. }
  49. fmt.Println("Starting on " + server.Addr)
  50. //fmt.Println(server.ListenAndServe())
  51. err := server.ListenAndServe()
  52. if err != nil && !isClosing {
  53. fmt.Println(err)
  54. }
  55. }