serv_pwa.go 1004 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // package serv_pwa -- сервер PWA для клиента
  2. package serv_pwa
  3. import (
  4. "fmt"
  5. "net/http"
  6. "os"
  7. "github.com/maxence-charriere/go-app/v9/pkg/app"
  8. )
  9. type hello struct {
  10. app.Compo
  11. }
  12. func (h *hello) Render() app.UI {
  13. return app.H1().Text("Hello World!")
  14. }
  15. // ServPwa -- встренный сервер HTTP для обработки запросов PWA-клиента
  16. type ServPwa struct {
  17. }
  18. // NewServPwa -- возвращает новый PWA-сервер
  19. func NewServPwa() *ServPwa {
  20. sf := &ServPwa{}
  21. return sf
  22. }
  23. func (sf *ServPwa) Run() error {
  24. app.Route("/", &hello{})
  25. app.RunWhenOnBrowser()
  26. http.Handle("/", &app.Handler{
  27. Name: "Hello",
  28. Description: "An Hello World! example",
  29. })
  30. port := os.Getenv("SERVER_HTTP_PORT")
  31. if port == "" {
  32. return fmt.Errorf("ServHttp.Run(): env SERVER_HTTP_PORT not defined")
  33. }
  34. if err := http.ListenAndServe(port, nil); err != nil {
  35. return fmt.Errorf("ServHttp.Run(): in serve HTTP, err=\n\t%w", err)
  36. }
  37. return nil
  38. }