9

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

我不需要访问过去的数据,浏览器只需要在数据发生变化时获取当前数据

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

4

2 回答 2

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/

于 2018-12-20T16:56:35.043 回答
7

API Gateway 是一种存储转发服务。它从后端可能碰巧(Lambda、HTTP 服务器等)收集响应,然后将其整块返回给浏览器——它不流式传输响应,因此它不适合用作事件源。

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

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

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

于 2018-01-28T01:51:45.053 回答