HealthCheckAPI/main.go

36 lines
673 B
Go

package main
import (
"encoding/json"
"log"
"net/http"
"time"
)
func main() {
sseBroker := NewSSEBroker()
checker := NewHealthChecker()
go func() {
ticker := time.NewTicker(30 * time.Second)
defer ticker.Stop()
for {
checker.CheckAll()
<-ticker.C
}
}()
http.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) {
statuses := checker.GetStatuses()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(statuses)
})
http.HandleFunc("/events", func(w http.ResponseWriter, r *http.Request) {
sseBroker.Handler(w, r)
})
log.Println("Serving on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}