package main import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/adaptor" "github.com/gofiber/fiber/v2/middleware/cors" socketio "github.com/googollee/go-socket.io" "log" "relay-server/database" "relay-server/router" "relay-server/socket" "relay-server/utils" ) func main() { app := fiber.New(fiber.Config{ ErrorHandler: utils.ErrorHandler, }) server := socketio.NewServer(nil) app.Use(cors.New(cors.Config{ AllowOrigins: "http://localhost:5173", AllowHeaders: "Origin, Content-Type, Accept, Authorization", AllowMethods: "GET,POST,PUT,DELETE", //AllowCredentials: true, })) db, err := database.Init() if err != nil { log.Fatal("Failed to initialize database") } defer func() { if err := db.Close(); err != nil { log.Fatalf("Failed to close database connection: %v", err) } log.Println("Database connection closed") }() err = socket.InitializeSocket(server) if err != nil { log.Println(err) } go func() { err := server.Serve() if err != nil { log.Println(err) } }() defer func(server *socketio.Server) { err := server.Close() if err != nil { log.Println("disconnected from server", err) } }(server) app.Use("/socket.io/*", adaptor.HTTPHandler(server)) app.Get("/socket.io/", adaptor.HTTPHandler(server)) // Setup routes router.SetupRoutes(app) log.Fatal(app.Listen(":3000")) }