12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // package serv_web -- сервер бота на файбере
- package serv_web
- import (
- "fmt"
- "log"
- "os"
- "sync"
- "time"
- "github.com/gofiber/fiber/v2"
- // "github.com/gofiber/template/html"
- "wartank/server/serv_web/web_api"
- "wartank/pkg/types"
- )
- /*
- Главный тип бота на файбере
- */
- // ServWeb -- главный тип приложения
- type ServWeb struct {
- app types.IServer
- api *web_api.WebApi
- router *fiber.App
- block *sync.RWMutex
- port string // Порт веб-сервера
- }
- // NewServWeb -- возвращае тновый *ServFiber
- func NewServWeb(app types.IServer) (serv *ServWeb, err error) {
- fmt.Printf("NewServWeb()\n")
- if app == nil {
- return nil, fmt.Errorf("NewServWeb(): IApp is nil")
- }
- port := os.Getenv("SERVER_PORT")
- if port == "" {
- return nil, fmt.Errorf("NewServWeb(): env SERVER_PORT not set")
- }
- sf := &ServWeb{
- app: app,
- block: &sync.RWMutex{},
- port: port,
- }
- // engine := html.New("./static/tmpl", "*.tmpl.html")
- fiberConfig := fiber.Config{
- ServerHeader: "WarTank",
- BodyLimit: 10 * 1024 * 1024,
- Concurrency: 512,
- ReadTimeout: 30 * time.Second,
- WriteTimeout: 30 * time.Second,
- IdleTimeout: 30 * time.Second,
- ReadBufferSize: 20 * 1024,
- WriteBufferSize: 20 * 1024,
- AppName: "WarTank",
- Network: fiber.NetworkTCP4,
- // Views: engine,
- }
- sf.router = fiber.New(fiberConfig)
- // sf.router.Static("/static", "./static")
- return sf, nil
- }
- // Run -- запускает бота в работу
- func (sf *ServWeb) Run() error {
- log.Printf("ServWeb.Run()\n")
- var err error
- {
- sf.api, err = web_api.NewWebApi(sf.app)
- if err != nil {
- return fmt.Errorf("ServWeb.Run(): in make WebApi, err=\n\t%w", err)
- }
- }
- sf.api.Run()
- log.Printf("ServWeb.Run(): listen\n")
- if err := sf.router.Listen(":" + sf.port); err != nil {
- panic(fmt.Errorf("ServWeb.Run(): in serving web, err=\n\t%w", err))
- }
- return nil
- }
- // Router -- возвращает роутер сервера
- func (sf *ServWeb) Router() *fiber.App {
- return sf.router
- }
|