服务器发送事件(SSE)能与AWS Cloudfront合作吗?

4

有没有办法在Cloudfront上使用sse(服务器发送事件)?

我知道几年前他们宣布支持websockets,但我找不到任何与通过Cloudfront使用sse通信相关的参考或案例。

我进行了测试,客户端响应大约一分钟后就以504网关超时结束。

3个回答

0

是的,您可以在CloudFront上使用SSE(服务器发送事件)。

有许多不同的方法可以在CloudFront后面实现您的API。因此,在某些情况下可能会存在限制。但是,让我描述一种标准且直接的方式,您可以设置应用程序并已经测试可与SSE一起使用。

假设您有一个EC2实例(至少一个)位于ALB(应用程序负载均衡器)后面。即使您不需要多个EC2实例,您可能需要一个ALB以使用HTTPS。即使您需要将TLS / SSL证书导入到CloudFront{{link1:Distribution}}中,您还需要通过HTTPS(不要忘记它可能位于另一个大陆)使您的API可访问(由CloudFront本身)。

在CloudFront中,您可以创建一个分发,其中Origin基本上将https://yourapp.com/api映射到该ALB。请注意,CloudFront还允许您将流量转发到不同的(子)域,如果那是您的API / ALB所在的位置(我也成功测试了该设置)。

-1

Websockets 可以与 AWS API Gateway 一起使用。您也可以使用 AppSync(GraphQL)订阅。CloudFront 本身无法发送任何内容。


1
我知道有其他选择,但这并没有回答问题。 - ferflores
2
正如我所说,CloudFront不支持服务器端事件。 - Ivan Shumov

-1
AWS资源与事件桥(基本上是触发事件的异步方式)相关联,它是无状态的,因此不可能实现。唯一的方法是您必须在某种Web容器中部署应用程序,以此来实现您期望的行为。
另一种方法是您可以使用AWS API网关的WebSocket打开连接(全双工),并来回传输任何数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接