无服务器 GraphQL 订阅

10

我最近开始使用GraphQL,并已成功在AWS Lambda上进行了设置,使其具有“无服务器”架构。但是我想利用GraphQL Subscriptions实现更多的实时功能。

我知道AWS Lambda不允许WebSockets,因为连接仅在函数运行期间或达到超时限制时持续。

但是否有一种方式可以设置GraphQL后端,以便它可以利用Subscriptions并保留在AWS服务中,并像“无服务器”应用程序一样进行扩展。

例如,使用AWS Lambda进行GraphQL查询和突变,然后使用另一个AWS服务进行GraphQL Subscriptions。

3个回答

7
本周(11月29日),AWS AppSync 宣布支持 GraphQL 订阅。

这是正确的,更多信息请参见:https://docs.aws.amazon.com/appsync/latest/devguide/real-time-data.html - Richard
AppSync似乎非常适合您所寻找的。您可以上传模式并使用lambda通过解析器实现任何自定义逻辑。AppSync可以直接处理订阅,并允许您通过添加带有@aws_subscribe(mutations: ["myMutationName"])指令的订阅字段来订阅API中的任何变化。 - mparis

0

在AWS上唯一支持WebSockets的无服务器服务是IoT。我知道这个名字听起来很奇怪,但它对于Web浏览器来说运行良好。

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

我不确定GraphQL订阅的工作原理,但我想象您的客户端将订阅一个主题,每当数据发生更改时,一个Lambda函数将被触发。该Lambda将能够向主题发布通知,所有订阅此主题的客户端都将收到消息。


我一直在研究使用AWS IoT,但对于GraphQL订阅集成感到困惑。不过我会继续研究的,也许我能将其转化为解决方案。 - Dan
@dan,你实现了这个功能吗?如果你已经实现了,请告诉我步骤,我需要在AWS Lambda上创建GraphQL订阅。 - Dharmesh Vasani
@DharmeshVasani 我没有继续实现这个功能,但可以通过在EC2上运行websocket服务器来轻松完成。我针对那个特定项目的解决方案是将整个GraphQL堆栈移动到https://www.graph.cool/,然后稍后迁移到Firebase以便于实时集成。 - Dan
@dan 感谢您的回复。 - Dharmesh Vasani

0

我曾经开始使用谷歌云函数,但后来转向了无服务器的Zeit Now,但我仍然能够使用订阅。也许你也可以去那里看看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接