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
Priority
Medium - Enhances real-time capabilities
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 definitionsbackend/graphql/pubsub.js- PubSub implementationbackend/tests/graphql.subscription.test.js- Subscription testsModify:
backend/graphql/schema.js- Add subscription typesbackend/graphql/resolvers.js- Add subscription resolversbackend/graphql/apollo.js- Configure WebSocket supportbackend/services/SocketService.js- Integrate with GraphQL subscriptionsbackend/controllers/transactionController.js- Publish eventsSubscription Schema
Acceptance Criteria
Priority
Medium - Enhances real-time capabilities