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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部