在这种情况下,NodeJS用作运行时,AWS Lambda用作事件通知程序(更新来自其他lambda或DB)。
我的挑战是,“用户浏览器”也可以是移动客户端。 “API”应作为一种服务,允许客户(移动或网络)订阅,取消订阅或发布数据,而不是其他任何内容。
lambda可以作为具有“将事件通知”推送到直接客户端的API的API吗?
有没有解决方案,样本工作/源代码可以用作POC?
接下来的问题是,如何扩展此类架构,因为它变为有状态(需要内存来记住客户端连接的状态)?
或者,它如何可能在DB上持久保存客户端连接(使用websocket或socket.io等框架)?
答案 0 :(得分:3)
AWS拥有SNS服务来发送通知,您可以在Lambda中使用这些通知。
您也可以直接使用相关平台的通知系统,例如iOS,Node有一个" apn"用于与Apple的APNS服务通信的模块 - 它可以直接使用,并且可以在Lambda函数中实现。
简而言之:
您的iOS应用程序注册APNS,该APNS使用APNS设备令牌进行响应。然后,您的应用应将此信息发送到您的API /服务器进行存储。
然后,您的API可以向APNS发送通知,引用任何设备令牌,以及您从Apple Developer页面创建的私钥文件。
APNS会将通知发送到已注册的设备。
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查看物联网的服务限制。您需要确定您的应用是否符合这些范围,具体取决于您的应用具有的各种指标(每秒请求数,并发连接数等)。