Skip to content

Add GraphQL Subscription Support for Real-Time Updates #328

@llinsss

Description

@llinsss

Problem

Current GraphQL implementation only supports queries and mutations. Need subscriptions for real-time updates on transactions, balances, and notifications.

Proposed Solution

Add GraphQL subscriptions using WebSocket transport for real-time data streaming.

Technical Implementation

New Files:

  • backend/graphql/subscriptions.js - Subscription definitions
  • backend/graphql/pubsub.js - PubSub implementation
  • backend/tests/graphql.subscription.test.js - Subscription tests

Modify:

  • backend/graphql/schema.js - Add subscription types
  • backend/graphql/resolvers.js - Add subscription resolvers
  • backend/graphql/apollo.js - Configure WebSocket support
  • backend/services/SocketService.js - Integrate with GraphQL subscriptions
  • backend/controllers/transactionController.js - Publish events

Subscription Schema

type Subscription {
  transactionUpdated(userId: ID!): Transaction
  balanceChanged(userId: ID!, chain: String!): Balance
  notificationReceived(userId: ID!): Notification
  priceUpdated(token: String!): TokenPrice
  tagRegistered: Tag
}

# Usage example
subscription {
  transactionUpdated(userId: "123") {
    id
    status
    amount
    from
    to
    timestamp
  }
}

Acceptance Criteria

  • WebSocket transport configured
  • Subscriptions for transactions, balances, notifications
  • PubSub with Redis backend
  • Authentication for subscriptions
  • Connection management and cleanup
  • Subscription filtering
  • Test coverage > 80%

Priority

Medium - Enhances real-time capabilities

Metadata

Metadata

Assignees

No one assigned

    Labels

    Stellar WaveIssues in the Stellar wave programenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions