首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无服务器web套接字服务器?

无服务器web套接字服务器?
EN

Stack Overflow用户
提问于 2017-03-15 14:51:52
回答 6查看 5K关注 0票数 12

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

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

有人有什么想法吗?只是确认一下。

谢谢

EN

回答 6

Stack Overflow用户

发布于 2019-01-23 20:45:41

随着对AWS API Gateway的WebSocket支持的发布,您可以创建无服务器的WebSocket应用编程接口。

WebSocket接口由一条或多条路由组成。要确定特定入站请求应该使用哪条路由,您需要提供一个路由选择表达式。根据入站请求对该表达式进行求值,以生成与路由的某个routeKey值相对应的值。API网关将请求路由到对应的lambda函数。

来自亚马逊网络服务博客example

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

您可以将其扩展为使用DynamoDB Streams向客户端发送有关数据任何更改的消息

票数 6
EN

Stack Overflow用户

发布于 2017-03-15 17:42:27

目前,AWS Lambda和Azure函数不支持此功能。如果您计划使用Websocket在亚马逊网络服务中设置可伸缩环境,您可以在ECS集群或具有Websocket支持的服务器(如NodeJS )的EC2实例前使用Application Load Balancer

另一种解决方案是在您的体系结构中使用完全托管的服务,如Google Firebase ServicePubnub来处理实时部分。

票数 1
EN

Stack Overflow用户

发布于 2017-03-15 19:37:39

如果唯一的状态是传输层的连接本身

事实并非如此。Web套接字连接exchange keep-alives作为第7层有效负载。其他人可能会争辩说,它更准确地描述为第6层和第7层之间的某个子层……但在任何情况下,它都远远高于传输层。

而且许多应用程序以其他方式使用web套接字,这些方式也不是无状态的。一旦连接,然后进行身份验证,就不需要不断地重新进行身份验证,因为套接字上的客户端在15分钟后将是同一个客户端,而这是在无服务器环境中不可避免的开销-- websocket上的每个操作都需要重新进行身份验证。再例如,对于恒定的数据流,服务器可能会跟踪已发送的内容或客户端感兴趣的流的特定子集。

如果您没有维护(或不需要)到服务器的持久连接,那么可以问这个问题:“为什么要使用web套接字?”

也许还相关: HAProxy是一个常用的负载均衡器,支持web套接字,它为每个当前的web套接字连接维护一个到单个后端服务器的持久连接。如果后端服务器脱机,则平衡器中没有提供为现有连接选择另一个后端。客户端将需要重新连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42802891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档