是否有适合向浏览器发送实时更新的 aws 服务?

mag*_*omp 9 amazon-web-services server-sent-events aws-lambda eventsource

我正在开发一个股票应用程序,必须让用户浏览器更新价格变化

我不需要访问过去的数据,浏览器只需在更改时获取当前数据

是否可以过滤 dynamodb 流并公开可以与 javascript EventSource 一起使用的端点(在 api 网关后面)?

小智 10

我意识到这不是使用服务器发送的事件,而是 AWS 刚刚宣布了用于 API 网关的无服务器 WebSockets。定价基于连接的分钟数和发送的消息数量。

产品发布文章:https : //aws.amazon.com/about-aws/whats-new/2018/12/amazon-api-gateway-launches-support-for-websocket-apis/

文档:https : //docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html

定价:https : //aws.amazon.com/api-gateway/pricing/


Mic*_*bot 7

API Gateway 是一种存储转发服务。它收集来自任何后端可能恰好是(LAMBDA,HTTP服务器等)的响应,然后返回它的连接块到浏览器-它不流的响应,所以它不适合于用作事件源。

AWS 目前没有明显适合此用例的托管服务产品……您需要在 EC2 上使用一台(或多个)服务器,使用数据流并将其中继回连接的浏览器。

假设运行 EC2 服务器是一个可接受的选项,那么您需要 HTTPS 和负载平衡。Application Load Balancer 支持 Web 套接字,因此它也可能支持事件源。TCP(非 HTTP)模式下的经典 ELB 应该可以毫无问题地支持事件源,尽管当浏览器连接丢失时它可能无法正确地向后端发出信号。这两个平衡器也可以为您卸载 HTTPS。网络负载均衡器肯定可以用于平衡事件源,但您的实例需要提供 HTTPS,因为 NLB 不会为您卸载它。

一个有点非正统的替代方案实际上可能是 AWS IoT,它具有内置的 websocket 支持......当然与事件源不同,但仍然是流连接......在这样的环境中,我想每个浏览器用户都可能是一个可寻址的“事物”。