package httpserver import ( "context" "github.com/gofiber/fiber/v2" "github.com/gofiber/websocket/v2" ) func (a *App) initAppRoutes() { // a.fiber.Group("/users", users.CreateAccount(a.userAPI)) a.fiber.Get("/ws/:recipientID", func(c *fiber.Ctx) error { if websocket.IsWebSocketUpgrade(c) { c.Locals("allowed", true) return c.Next() } return fiber.ErrUpgradeRequired }, websocket.New(func(c *websocket.Conn) { recipientID := c.Params("recipientID") a.NotidicationStore.ConnectWebSocket(context.Background(), recipientID, c) defer a.NotidicationStore.DisconnectWebSocket(recipientID) for { _, _, err := c.ReadMessage() if err != nil { if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { a.Logger.Error("WebSocket error", "recipientID", recipientID, "error", err) } return } } })) }