概述Subscriptions 支持服务向客户端实时推送。本文提供传输协议选择、后端 Pub/Sub 集成、过滤与授权、重连与速率限制,以及验证方法。传输与协议(已验证)WebSocket:双向通信,支持丰富交互;SSE:单向推送,适合轻量场景;协议:`graphql-ws`/`subscriptions-transport-ws`(新项目建议前者)。后端集成Pub/Sub:Kafka/Redis/NATS 等;Dataloader:批量获取相关数据,避免 N+1;过滤:按用户/租户/主题过滤事件。授权与治理授权:在 `connection_init` 与订阅解析处校验 JWT 与权限;速率限制:限制订阅数量与推送速率;重连:指数退避与会话恢复。示例(片段)type Subscription { orderUpdated(userId: ID!): OrderEvent } const resolvers = { Subscription: { orderUpdated: { subscribe: (_, { userId }, ctx) => pubsub.asyncIterator(`order:${userId}`) } } } 验证与监控指标:连接数、订阅数、推送延迟与错误;弱网模拟与重连行为验证;常见误区无授权与过滤导致数据泄漏;推送风暴无速率限制;结语以合适的传输与后端 Pub/Sub、过滤与授权、速率控制与重连策略,并以指标与演练验证,GraphQL 实时推送可在复杂场景中稳定工作。

发表评论 取消回复