diff --git a/internal/http/server.go b/internal/http/server.go index c2b1b9b..f8aa1fd 100644 --- a/internal/http/server.go +++ b/internal/http/server.go @@ -17,7 +17,6 @@ import ( "tailly_back_v2/internal/http/middleware" "tailly_back_v2/internal/service" "tailly_back_v2/pkg/auth" - "time" ) type Server struct { @@ -65,40 +64,34 @@ func (s *Server) configureRouter() { s.router.Use(middleware.MetricsMiddleware) s.router.Use(middleware.CORS(allowedOrigins)) - // Основной GraphQL обработчик + s.router.Use(middleware.WSAuthMiddleware(s.tokenAuth)) + s.router.Use(middleware.AuthMiddleware(s.tokenAuth)) + resolver := graph.NewResolver(s.services, s.db, s.services.Messages) srv := handler.NewDefaultServer(graph.NewExecutableSchema(graph.Config{ Resolvers: resolver, })) - // Настройка WebSocket транспорта - wsUpgrader := websocket.Upgrader{ - CheckOrigin: func(r *http.Request) bool { - origin := r.Header.Get("Origin") - for _, allowed := range allowedOrigins { - if origin == allowed { - return true + wsTransport := transport.Websocket{ + Upgrader: websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + origin := r.Header.Get("Origin") + for _, allowed := range allowedOrigins { + if origin == allowed { + return true + } } - } - return false + return false + }, }, } - srv.AddTransport(&transport.Websocket{ - Upgrader: wsUpgrader, - KeepAlivePingInterval: 15 * time.Second, - }) + srv.AddTransport(&wsTransport) - // Раздельные эндпоинты: - - // 1. Обычные HTTP GraphQL запросы (только POST) - s.router.With(middleware.AuthMiddleware(s.tokenAuth)).Post("/query", srv.ServeHTTP) - - // 2. WebSocket подписки (отдельный эндпоинт) - s.router.With(middleware.WSAuthMiddleware(s.tokenAuth)).Get("/ws", srv.ServeHTTP) - - // 3. Playground и другие обработчики s.router.Handle("/", playground.Handler("GraphQL playground", "/query")) + s.router.Handle("/ws", srv) + s.router.Handle("/query", srv) + s.router.Handle("/uploads/*", http.StripPrefix("/uploads/", http.FileServer(http.Dir("./uploads")))) } @@ -114,12 +107,9 @@ func (s *Server) configureMetrics() { } func (s *Server) Run() error { - log.Printf("Server running on %s:%s", s.cfg.Server.Host, s.cfg.Server.Port) - log.Printf("WebSocket subscriptions at /ws") return http.ListenAndServe(s.cfg.Server.Host+":"+s.cfg.Server.Port, s.router) } func (s *Server) Shutdown(ctx context.Context) error { - // Graceful shutdown logic return nil }