我正在开发一款股票应用,需要对用户的浏览器进行价格更新。
我不需要访问过去的数据,只需在价格变动时让浏览器获取当前数据。
是否可能过滤 DynamoDB 流并公开一个端点(在 API 网关后面),可与 JavaScript EventSource 一起使用?
我正在开发一款股票应用,需要对用户的浏览器进行价格更新。
我不需要访问过去的数据,只需在价格变动时让浏览器获取当前数据。
是否可能过滤 DynamoDB 流并公开一个端点(在 API 网关后面),可与 JavaScript EventSource 一起使用?
我知道这不是使用服务器发送事件,但AWS刚刚宣布了API Gateway的无服务器WebSockets。 定价基于连接时间和发送的消息数量。
文档: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html
API Gateway是一个存储和转发服务。它从后端收集响应(Lambda、HTTP服务器等),然后将其作为整体返回给浏览器 - 它不会流式传输响应,因此不适合用作Eventsource。
AWS目前没有明显适用于此用例的托管服务...您需要在EC2上拥有一个服务器(或多个服务器),消耗数据流并将其回传到已连接的浏览器。
假设运行EC2服务器是可接受的选项,则需要HTTPS和负载平衡。应用程序负载均衡器支持Web套接字,因此它还可能支持事件源。 TCP模式下的经典ELB应该能够支持事件源,但当浏览器连接断开时,它可能无法正确地向后端发出信号。这两个负载均衡器也可以为您卸载HTTPS。网络负载均衡器肯定适用于平衡事件源,但是您的实例需要为您提供HTTPS,因为NLB不会为您卸载它。
一个有点非正统的替代方案实际上可能是AWS IoT,它具有内置的websocket支持... 当然不同于事件源,但仍然是一个流式连接...在这种环境中,我想每个浏览器用户都可以成为可寻址的“事物”。