38 lines
684 B
Go
38 lines
684 B
Go
package coordinator
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/labstack/echo/v4/middleware"
|
|
)
|
|
|
|
type Server struct {
|
|
router *echo.Echo
|
|
mu sync.RWMutex
|
|
coordinator *Coordinator
|
|
}
|
|
|
|
func NewServer() *Server {
|
|
return &Server{
|
|
router: echo.New(),
|
|
coordinator: NewCoordinator(),
|
|
}
|
|
}
|
|
|
|
func (s *Server) Configure() {
|
|
// Middleware
|
|
s.router.Use(middleware.Logger())
|
|
s.router.Use(middleware.Recover())
|
|
s.router.Use(middleware.CORS())
|
|
|
|
// Роуты
|
|
s.router.POST("/register", s.registerHandler)
|
|
s.router.GET("/peers", s.listPeers)
|
|
s.router.GET("/ws", s.websocketHandler)
|
|
}
|
|
|
|
func (s *Server) Run() error {
|
|
return s.router.Start(":8080")
|
|
}
|