From d2750ba384f241d8ccae6c91349e48a9d29a9155 Mon Sep 17 00:00:00 2001 From: madipo2611 Date: Mon, 18 Aug 2025 16:40:55 +0300 Subject: [PATCH] =?UTF-8?q?v0.0.18.8.1=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D1=85=D1=8D=D0=BD=D0=B4=D0=BB=D0=B5=D1=80=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=B5=D0=B1=D1=81=D0=BE=D0=BA=D0=B5?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/http/server.go | 44 ++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 27 deletions(-) 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 }