使用 AWS Lambda + API 网关的 Websocket 连接
Websocket connection using AWS Lambda + API Gateway
我有一个 React 应用程序,我想设置一个 websocket 连接到我的后端以进行一些实时更新。我打算部署一个 EC2 或 ECS 集群来托管 websocket 连接。然后我偶然发现了一些文章,展示了如何以无服务器方式设置 websocket 连接。
但是,出于某些原因,我似乎无法弄清楚这是如何工作的。
- Lambda 的最长运行时间为 15 分钟
- 没有lambda时,后端如何建立连接运行,后端要调用消息给前端
这是否意味着我必须一直让 lambda 保持活动状态,如果是这样,我觉得这不再是个好主意。在上面的例子中,我无法理解的是,在创建那个聊天应用程序时,每个聊天室只能存在15分钟吗?如果用户断开与房间的连接,该用户将如何更新新消息。
有没有人有过这种解决方案的经验?
它是保持 websocket 连接活动的 API 网关。浏览器(或任何您的客户端)正在连接到网关,而不是 lambda 函数。
网关触发Lambda函数。您可以通过从 Integration Request 中选择 LAMBDA_PROXY 来连接它。您可以将每条路线连接到一个单独的功能,或者让它们全部由一个处理,无论您喜欢哪个。除非你在函数中做一些非常复杂的事情,否则它应该只执行几毫秒。
从函数到原始客户端的通信也是通过网关完成的 - 使用 APIGatewayManagementAPI.postToConnection(或者你可以使用连接 URL 我猜你自己的 http 版本)。
我有一个 React 应用程序,我想设置一个 websocket 连接到我的后端以进行一些实时更新。我打算部署一个 EC2 或 ECS 集群来托管 websocket 连接。然后我偶然发现了一些文章,展示了如何以无服务器方式设置 websocket 连接。
但是,出于某些原因,我似乎无法弄清楚这是如何工作的。
- Lambda 的最长运行时间为 15 分钟
- 没有lambda时,后端如何建立连接运行,后端要调用消息给前端
这是否意味着我必须一直让 lambda 保持活动状态,如果是这样,我觉得这不再是个好主意。在上面的例子中,我无法理解的是,在创建那个聊天应用程序时,每个聊天室只能存在15分钟吗?如果用户断开与房间的连接,该用户将如何更新新消息。
有没有人有过这种解决方案的经验?
它是保持 websocket 连接活动的 API 网关。浏览器(或任何您的客户端)正在连接到网关,而不是 lambda 函数。
网关触发Lambda函数。您可以通过从 Integration Request 中选择 LAMBDA_PROXY 来连接它。您可以将每条路线连接到一个单独的功能,或者让它们全部由一个处理,无论您喜欢哪个。除非你在函数中做一些非常复杂的事情,否则它应该只执行几毫秒。
从函数到原始客户端的通信也是通过网关完成的 - 使用 APIGatewayManagementAPI.postToConnection(或者你可以使用连接 URL 我猜你自己的 http 版本)。