WebSockets - API 接口
API – 定义
API 是应用程序接口的缩写,是一组用于构建软件应用程序的例程、协议和工具。
一些重要的功能是 −
API 指定软件组件应如何交互,以及在对图形用户界面 (GUI) 组件进行编程时应使用 API。
良好的 API 通过提供所有构建块可以更轻松地开发程序。
REST 通常通过 HTTP 运行,常用于移动应用程序、社交网站、混搭工具和自动化业务流程。
REST 风格强调通过有限数量的操作(动词)来增强客户端和服务之间的交互。
通过分配资源提供灵活性; 他们自己独特的通用资源标识符(URI)。
REST 避免了歧义,因为每个动词都有特定的含义(GET、POST、PUT 和 DELETE)
Web Socket 的优点
Web Socket 解决了 REST 或 HTTP 的一些问题 −
双向
HTTP 是一种单向协议,始终由客户端发起请求。 服务器处理并返回响应,然后客户端使用它。 Web Socket 是一种双向协议,没有预定义的消息模式(例如请求/响应)。 客户端或服务器都可以向对方发送消息。
全双工
HTTP 允许请求消息从客户端发送到服务器,然后服务器向客户端发送响应消息。 在给定时间,要么客户端正在与服务器通信,要么服务器正在与客户端通信。 Web Socket 允许客户端和服务器彼此独立地进行通信。
单个 TCP 连接
通常,新的 TCP 连接是针对 HTTP 请求发起的,并在收到响应后终止。 需要为另一个 HTTP 请求/响应建立新的 TCP 连接。 对于Web Socket,HTTP 连接使用标准HTTP 升级机制进行升级,并且在Web Socket 连接的生命周期中客户端和服务器通过同一个TCP 连接进行通信。
下图显示了在恒定负载大小下处理 N 条消息所需的时间(以毫秒为单位)。
这是为该图表提供的原始数据 −
上面给出的图表显示,REST 开销随着消息数量的增加而增加。 这是事实,因为需要发起和终止许多 TCP 连接,并且需要发送和接收许多 HTTP 标头。
最后一列特别显示了满足 REST 请求的时间量的乘数。
第二张图显示了通过改变负载大小来处理固定数量的消息所花费的时间。
这是为该图表提供的原始数据 −
此图显示,处理 REST 端点的请求/响应的增量成本很小,大部分时间都花在连接启动/终止和遵守 HTTP 语义上。
结论
Web Socket 是一种低级协议。 一切,包括简单的请求/响应设计模式、如何创建/更新/删除资源需求、状态代码等都构建在其之上。 所有这些都针对 HTTP 进行了明确定义。
Web Socket 是有状态协议,而 HTTP 是无状态协议。 Web Socket 连接可以在单个服务器上垂直扩展,而 HTTP 可以水平扩展。 有一些用于 Web Socket 水平扩展的专有解决方案,但它们并不基于标准。 HTTP 还具有许多其他优点,例如缓存、路由和多路复用。 所有这些都需要在 Web Socket 之上定义。