【问题标题】:Serverless GraphQL Subscriptions无服务器 GraphQL 订阅
【发布时间】:2017-12-05 10:44:35
【问题描述】:

我最近开始使用 GraphQL,并且能够在 AWS Lambda 上成功设置它,从而为我提供“无服务器”架构。不过,我想利用 GraphQL 订阅来获得更多实时功能。

我了解 AWS Lambda 不允许使用 WebSocket,因为连接仅在函数运行或达到超时限制时才会持续。

但是有没有办法设置 GraphQL 后端,以便它可以利用订阅并将其保留在 AWS 服务中,并让它像“无服务器”应用程序一样扩展。

类似于使用 AWS Lambda 进行 GraphQL 查询和突变,然后使用不同的 AWS 服务进行 GraphQL 订阅。

【问题讨论】:

    标签: aws-lambda graphql serverless-framework graphql-subscriptions aws-appsync


    【解决方案1】:

    AWS AppSync 于本周(11 月 29 日)宣布,它支持 graphQL 订阅。

    【讨论】:

    • 这是正确的,更多信息在这里:docs.aws.amazon.com/appsync/latest/devguide/real-time-data.html
    • AppSync 似乎非常适合您的需求。您可以上传您的架构并使用 lambda 通过解析器实现任何自定义逻辑。 AppSync 开箱即用地处理订阅,并允许您通过添加带有 @aws_subscribe(mutations: ["myMutationName"]) 指令的订阅字段来订阅 API 中的任何突变。
    【解决方案2】:

    在 AWS 上支持 WebSockets 的唯一无服务器服务是 IoT。我知道这个名字听起来很奇怪,但它适用于网络浏览器。

    您需要在前端捆绑 AWS IoT SDK 以订阅和发布主题,并使用 Cognito 或 IAM 为您的客户端检索临时凭证。您可以设置限制,以便客户端只能订阅/发布特定主题。

    我不知道 GraphQL 订阅的具体工作原理,但我想您的客户将订阅一个主题,并且每次数据更改时,都会触发一个 Lambda 函数。此 Lambda 将能够向某个主题发布通知,并且订阅该主题的所有客户端都将收到该消息。

    【讨论】:

    • 我正在考虑使用 AWS IoT,但对 GraphQL 订阅集成感到困惑。我会继续研究,也许我可以找到解决方案。
    • @dan 你实现了这个功能吗?如果你有请给我步骤我需要帮助来在 AWS Lambda 上创建 graphql 订阅。
    • @DharmeshVasani 我没有继续实现此功能,但它可以关闭,而只需购买在 EC2 上运行 websocket 服务器。我针对那个特定项目的解决方案是将我的整个 GraphQL 堆栈移动到 graph.cool,然后我后来迁移到 Firebase 以便于实时集成。
    • @dan 感谢您的回复。
    【解决方案3】:

    我已经开始使用谷歌云功能,但现在转移到 zeit,它是无服务器的,但我也可以使用订阅。或许你也可以去看看

    【讨论】:

      猜你喜欢
      • 2020-03-24
      • 1970-01-01
      • 2019-01-27
      • 2020-12-03
      • 2019-01-27
      • 2019-08-09
      • 2020-05-03
      • 2018-06-01
      • 1970-01-01
      相关资源
      最近更新 更多