From d42cde1b6fd63b6d2621f514bb9ad4e6da18f512 Mon Sep 17 00:00:00 2001 From: Akilan Date: Sat, 25 Feb 2023 01:10:59 +0000 Subject: [PATCH] fixed broadcast bug --- core/core.go | 2 +- server/models.go | 9 +++++++++ server/server.go | 32 +++++++++++++++++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/core/core.go b/core/core.go index 61d0b26..6a18238 100644 --- a/core/core.go +++ b/core/core.go @@ -37,7 +37,7 @@ func BroadcastServerToBackend() error { respIpv4orIPv6 := Ip4or6(config.IPAddress) // Adding game session information - respIpv4orIPv6 = "https://" + respIpv4orIPv6 + respIpv4orIPv6 = "http://" + respIpv4orIPv6 // Get room information _, err = ReadRoomsFile() diff --git a/server/models.go b/server/models.go index c6e9293..1e70ca1 100644 --- a/server/models.go +++ b/server/models.go @@ -81,6 +81,15 @@ func RemoveTableGameSession(db *gorm.DB) (*gorm.DB, error) { return db, nil } +func RemoveTableGameSessionID(db *gorm.DB, id string) (*gorm.DB, error) { + var gameSession GameSession + // Creates table of type GameSessions + db.Where("game_session_id = ?", id).Delete(&gameSession) + // returns variable DB of type *gorm.DB and error + // which is nil at the current moment + return db, nil +} + // DisplayGameSessions Returns all the rows of all the game session information // to display func DisplayGameSessions(db *gorm.DB) ([]*GameSession, error) { diff --git a/server/server.go b/server/server.go index 8006c9d..0344e02 100644 --- a/server/server.go +++ b/server/server.go @@ -3,8 +3,10 @@ package server import ( "fmt" "github.com/gin-gonic/gin" + "gorm.io/gorm" "net/http" "strconv" + "time" ) // Server Starts the server for the client side @@ -91,7 +93,7 @@ func Server(port string) error { // TODO redirect to homepage // Set client Cookie as Session ID // To be changed when we use HTTPS - c.SetCookie("SessionID", session.SessionKey, 3600, "/", "localhost", false, true) + c.SetCookie("SessionID", session.SessionKey, 3600, "/", "*", false, true) // redirects to the home page //c.Redirect(http.StatusFound, "/") @@ -178,6 +180,8 @@ func Server(port string) error { } }) + go CheckIfGameSessionIsActiveOrRemove(connect) + // Run gin server on the specified port err = r.Run(":" + port) if err != nil { @@ -186,3 +190,29 @@ func Server(port string) error { return nil } + +func CheckIfGameSessionIsActiveOrRemove(gorm *gorm.DB) { + fmt.Println("here") + for { + time.Sleep(2 * time.Second) + Gamesessions, err := DisplayGameSessions(gorm) + if err != nil { + return + } + + for i, _ := range Gamesessions { + req, err := http.NewRequest("GET", Gamesessions[i].Link, nil) + // Sending request to the backend server + client := &http.Client{} + _, err = client.Do(req) + if err != nil { + // remove from database game session + _, err = RemoveTableGameSessionID(gorm, Gamesessions[i].GameSessionID) + if err != nil { + fmt.Println(err) + return + } + } + } + } +}