backend.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package backend
  2. import (
  3. "fmt"
  4. "github.com/allanpk716/ChineseSubFinder/frontend/dist"
  5. "github.com/allanpk716/ChineseSubFinder/internal/backend/routers"
  6. "github.com/allanpk716/ChineseSubFinder/internal/backend/ws_helper"
  7. "github.com/allanpk716/ChineseSubFinder/internal/logic/cron_helper"
  8. "github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
  9. "github.com/gin-contrib/cors"
  10. "github.com/gin-gonic/gin"
  11. "io/ioutil"
  12. "net/http"
  13. )
  14. // StartBackEnd 开启后端的服务器
  15. func StartBackEnd(httpPort int, cronHelper *cron_helper.CronHelper) {
  16. gin.SetMode(gin.ReleaseMode)
  17. gin.DefaultWriter = ioutil.Discard
  18. engine := gin.Default()
  19. // 默认所有都通过
  20. engine.Use(cors.Default())
  21. routers.InitRouter(engine, cronHelper)
  22. engine.GET("/", func(c *gin.Context) {
  23. c.Header("content-type", "text/html;charset=utf-8")
  24. c.String(http.StatusOK, string(dist.SpaIndexHtml))
  25. })
  26. engine.StaticFS(dist.SpaFolderJS, dist.Assets(dist.SpaFolderName+dist.SpaFolderJS, dist.SpaJS))
  27. engine.StaticFS(dist.SpaFolderCSS, dist.Assets(dist.SpaFolderName+dist.SpaFolderCSS, dist.SpaCSS))
  28. engine.StaticFS(dist.SpaFolderFonts, dist.Assets(dist.SpaFolderName+dist.SpaFolderFonts, dist.SpaFonts))
  29. engine.StaticFS(dist.SpaFolderIcons, dist.Assets(dist.SpaFolderName+dist.SpaFolderIcons, dist.SpaIcons))
  30. engine.StaticFS(dist.SpaFolderImages, dist.Assets(dist.SpaFolderName+dist.SpaFolderImages, dist.SpaImages))
  31. engine.Any("/api", func(c *gin.Context) {
  32. c.Redirect(http.StatusMovedPermanently, "/")
  33. })
  34. hub := ws_helper.NewHub()
  35. go hub.Run()
  36. // middle.CheckAuth(),
  37. engine.GET("/ws", func(context *gin.Context) {
  38. ws_helper.ServeWs(hub, context.Writer, context.Request)
  39. })
  40. // listen and serve on 0.0.0.0:8080(default)
  41. log_helper.GetLogger().Infoln("Try Start Server At Port", httpPort)
  42. err := engine.Run(":" + fmt.Sprintf("%d", httpPort))
  43. if err != nil {
  44. log_helper.GetLogger().Errorln("Start Server At Port", httpPort, "Error", err)
  45. }
  46. }