无服务器Web套接字服务器?

Chr*_*lew 11 azure amazon-web-services websocket serverless

是否有任何无服务器技术允许构建无服务器的websocket服务器?

我知道长时间运行连接的本质是它们是有状态的,但如果唯一的状态是传输层的连接本身那么似乎可能有一个无服务器的产品将其抽象出来,所以你只处理应用层.是否有云提供商(AWS,Azure等)允许这样做?我无法看到AWS Lambda或Azure Functions实现此目的的方法.

有人有任何想法吗?只是检查.

谢谢

Rag*_*nya 5

随着WebSocket对AWS API Gateway支持的发布,您可以创建无服务器的WebSocket API。

WebSocket API由一个或多个路由组成。要确定特定入站请求应使用的路由,请提供路由选择表达式。根据入站请求对表达式进行求值,以生成与您的路线的routeKey值之一相对应的值。API网关将请求路由到相应的lambda函数。
在AWS博客示例中
在此处输入图片说明

该应用程序由API网关中的WebSocket API组成,用于处理客户端和服务器之间的连接(1)。当客户端从API连接(2)或从API断开连接(5)时,两个AWS Lambda函数会做出反应。客户端将消息发送到服务器时,将调用sendMessage函数(3)。服务器使用新的API网关管理API将消息发送到所有连接的客户端(4)。要跟踪每个已连接的客户端,请使用DynamoDB表保留连接标识符(您也可以使用它存储有关连接的其他状态信息)。

您可以扩展它,以使用DynamoDB流将数据的任何更改发送给客户端消息


Ash*_*han 1

目前 AWS Lambda 和 Azure Functions 不支持此功能。如果您计划使用 Websocket 在 AWS 中设置可扩展环境,则可以使用应用程序负载均衡器,并在 ECS 集群或 EC2 实例前面使用支持 Websocket 的服务器(例如 NodeJS)。

另一个解决方案是在架构中使用完全托管的服务,例如Google Firebase 服务Pubnub来处理实时部分。