WebSocket - API



API – 定义

API,是 Application Program Interface 的缩写,是一套用于构建软件应用程序的例程、协议和工具。

一些重要的特性包括:

  • API 指定了软件组件如何交互,并且在编程图形用户界面 (GUI) 组件时应该使用 API。

  • 一个好的 API 通过提供所有构建块来简化程序开发。

  • REST,通常运行在 HTTP 之上,常用于移动应用程序、社交网站、Mashup 工具和自动化业务流程。

  • REST 风格强调通过使用有限数量的操作(动词)来增强客户端和服务之间的交互。

  • 通过为资源分配其自己的唯一通用资源标识符 (URI) 来提供灵活性。

  • REST 避免歧义,因为每个动词都有特定的含义(GET、POST、PUT 和 DELETE)

WebSocket 的优势

WebSocket 解决了一些 REST 或 HTTP 的问题:

双向通信

HTTP 是一种单向协议,客户端始终发起请求。服务器处理并返回响应,然后客户端使用它。WebSocket 是一种双向协议,其中没有预定义的消息模式,例如请求/响应。客户端或服务器都可以向对方发送消息。

全双工

HTTP 允许请求消息从客户端发送到服务器,然后服务器将响应消息发送回客户端。在任何给定时间,要么客户端正在与服务器通信,要么服务器正在与客户端通信。WebSocket 允许客户端和服务器彼此独立地通信。

单个 TCP 连接

通常,为 HTTP 请求启动新的 TCP 连接,并在收到响应后终止。需要为另一个 HTTP 请求/响应建立新的 TCP 连接。对于 WebSocket,使用标准的 HTTP 升级机制升级 HTTP 连接,并且客户端和服务器在 WebSocket 连接的生命周期内通过相同的 TCP 连接进行通信。

下图显示了处理 N 条消息(对于恒定的有效负载大小)所花费的时间(以毫秒为单位)。

Single Connection

以下是提供此图的原始数据:

Constant Payload

上图和表显示 REST 开销随着消息数量的增加而增加。这是因为需要启动和终止许多 TCP 连接,并且需要发送和接收许多 HTTP 标头。

最后一列特别显示了满足 REST 请求所需时间的乘法因子。

第二个图表显示了通过改变有效负载大小来处理固定数量的消息所花费的时间。

Websockets Rest

以下是提供此图的原始数据:

Constant Number

此图显示,处理 REST 端点请求/响应的增量成本很小,并且大部分时间都花在了连接启动/终止和遵守 HTTP 语义上。

结论

WebSocket 是一种低级协议。所有内容,包括简单的请求/响应设计模式,如何创建/更新/删除资源需求、状态代码等,都需要在其之上构建。所有这些对于 HTTP 都是明确定义的。

WebSocket 是一种有状态协议,而 HTTP 是一种无状态协议。WebSocket 连接可以在单个服务器上垂直扩展,而 HTTP 可以水平扩展。WebSocket 水平扩展有一些专有解决方案,但它们不是基于标准的。HTTP 附带了许多其他优点,例如缓存、路由和多路复用。所有这些都需要在 WebSocket 之上定义。

广告