Реализована страница 404 ошибки

Реализовано переподключение к Redis в случае, если соединение упадёт
This commit is contained in:
ErickSkrauch 2016-07-28 18:17:12 +03:00
parent 283f4e0e3f
commit c2d0cb93cb
3 changed files with 28 additions and 3 deletions

View File

@ -31,6 +31,8 @@ func FindRecord(username string) (SkinItem, error) {
if (decodeErr != nil) { if (decodeErr != nil) {
log.Println("Cannot decode record data") log.Println("Cannot decode record data")
} }
} else {
log.Println("Error on request user data")
} }
return record, err return record, err

View File

@ -9,7 +9,7 @@ func NotFound(w http.ResponseWriter, r *http.Request) {
json, _ := json.Marshal(map[string]string{ json, _ := json.Marshal(map[string]string{
"status": "404", "status": "404",
"message": "Not Found", "message": "Not Found",
"link": "http://docs.ely.by", "link": "http://docs.ely.by/skin-system.html",
}) })
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")

View File

@ -3,6 +3,7 @@ package main
import ( import (
"log" "log"
"runtime" "runtime"
"time"
"net/http" "net/http"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@ -12,16 +13,17 @@ import (
"elyby/minecraft-skinsystem/lib/services" "elyby/minecraft-skinsystem/lib/services"
) )
const redisString string = "redis:6379"
func main() { func main() {
runtime.GOMAXPROCS(runtime.NumCPU()) runtime.GOMAXPROCS(runtime.NumCPU())
client, redisErr := redis.Dial("tcp", "redis:6379") client, redisErr := redis.Dial("tcp", redisString)
if redisErr != nil { if redisErr != nil {
log.Fatal("Redis unavailable") log.Fatal("Redis unavailable")
} }
router := mux.NewRouter().StrictSlash(true) router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/", routes.NotFound)
router.HandleFunc("/skins/{username}", routes.Skin).Methods("GET").Name("skins") router.HandleFunc("/skins/{username}", routes.Skin).Methods("GET").Name("skins")
router.HandleFunc("/cloaks/{username}", routes.Cape).Methods("GET").Name("cloaks") router.HandleFunc("/cloaks/{username}", routes.Cape).Methods("GET").Name("cloaks")
router.HandleFunc("/textures/{username}", routes.Textures).Methods("GET").Name("textures") router.HandleFunc("/textures/{username}", routes.Textures).Methods("GET").Name("textures")
@ -29,6 +31,8 @@ func main() {
router.HandleFunc("/minecraft.php", routes.MinecraftPHP).Methods("GET") router.HandleFunc("/minecraft.php", routes.MinecraftPHP).Methods("GET")
router.HandleFunc("/skins/", routes.SkinGET).Methods("GET") router.HandleFunc("/skins/", routes.SkinGET).Methods("GET")
router.HandleFunc("/cloaks/", routes.CapeGET).Methods("GET") router.HandleFunc("/cloaks/", routes.CapeGET).Methods("GET")
// 404
router.NotFoundHandler = http.HandlerFunc(routes.NotFound)
// TODO: убрать этого, т.к. он стар // TODO: убрать этого, т.к. он стар
router.HandleFunc("/system/setSkin", routes.SetSkin).Methods("POST") router.HandleFunc("/system/setSkin", routes.SetSkin).Methods("POST")
@ -39,5 +43,24 @@ func main() {
services.Redis = client services.Redis = client
services.Router = router services.Router = router
go func() {
for {
time.Sleep(5 * time.Second)
resp := services.Redis.Cmd("PING")
if (resp.Err != nil) {
log.Println("Redis not pinged. Try to reconnect")
newClient, redisErr := redis.Dial("tcp", redisString)
if (redisErr != nil) {
log.Println("Cannot reconnect to redis")
} else {
services.Redis = newClient
log.Println("Reconnected")
}
}
}
}()
log.Println("Started");
log.Fatal(http.ListenAndServe(":80", router)) log.Fatal(http.ListenAndServe(":80", router))
} }