使用AWS lambda实现推送通知

时间:2017-07-10 10:28:51

标签: node.js architecture push-notification aws-lambda

我指的是图表 aws lamba

在这种情况下,NodeJS用作运行时,AWS Lambda用作事件通知程序(更新来自其他lambda或DB)。

我的挑战是,“用户浏览器”也可以是移动客户端。 “API”应作为一种服务,允许客户(移动或网络)订阅,取消订阅或发布数据,而不是其他任何内容。

  1. lambda可以作为具有“将事件通知”推送到直接客户端的API的API吗?

  2. 有没有解决方案,样本工作/源代码可以用作POC?

  3. 接下来的问题是,如何扩展此类架构,因为它变为有状态(需要内存来记住客户端连接的状态)?

  4. 或者,它如何可能在DB上持久保存客户端连接(使用websocket或socket.io等框架)?

2 个答案:

答案 0 :(得分:3)

AWS拥有SNS服务来发送通知,您可以在Lambda中使用这些通知。

您也可以直接使用相关平台的通知系统,例如iOS,Node有一个" apn"用于与Apple的APNS服务通信的模块 - 它可以直接使用,并且可以在Lambda函数中实现。

简而言之:

  1. 您的iOS应用程序注册APNS,该APNS使用APNS设备令牌进行响应。然后,您的应用应将此信息发送到您的API /服务器进行存储。

  2. 然后,您的API可以向APNS发送通知,引用任何设备令牌,以及您从Apple Developer页面创建的私钥文件。

  3. APNS会将通知发送到已注册的设备。

  4. Here是一个很好的教程。

    您的其他疑问也许应该是单独的问题。

答案 1 :(得分:0)

  

lambda可以作为具有"推送事件通知功能的API吗?直接客户?

是的!正如@AndyOS所提到的,SNS是一项很棒的服务,非常适合发送通知。我不会在这里详细说明,以避免重复回复。

  

是否有任何解决方案,样本工作/源代码可以用作POC?

     

否则,它如何可能在DB上保持客户端连接(使用websocket或socket.io等框架)?

如果您希望使用websockets,我建议您查看IoT(https://aws.amazon.com/iot)。物联网支持MQTT协议(http://docs.aws.amazon.com/iot/latest/developerguide/protocols.html)。此页面还包含示例客户端代码,可帮助您引导解决方案。

  

接下来的问题是,如何扩展此类架构,因为它变为有状态(需要内存来记住客户端连接的状态)?

您可以在http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_iot查看物联网的服务限制。您需要确定您的应用是否符合这些范围,具体取决于您的应用具有的各种指标(每秒请求数,并发连接数等)。