backend.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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/logic/file_downloader"
  9. "github.com/gin-contrib/cors"
  10. "github.com/gin-gonic/gin"
  11. "io/ioutil"
  12. "net/http"
  13. )
  14. // StartBackEnd 开启后端的服务器
  15. func StartBackEnd(fileDownloader *file_downloader.FileDownloader, 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(fileDownloader, 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. engine.GET("/ws", func(context *gin.Context) {
  37. ws_helper.ServeWs(fileDownloader.Log, hub, context.Writer, context.Request)
  38. })
  39. // listen and serve on 0.0.0.0:8080(default)
  40. fileDownloader.Log.Infoln("Try Start Server At Port", httpPort)
  41. err := engine.Run(":" + fmt.Sprintf("%d", httpPort))
  42. if err != nil {
  43. fileDownloader.Log.Errorln("Start Server At Port", httpPort, "Error", err)
  44. }
  45. }