66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
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"))
|
|
}
|