WebSocket 是什么?你需要知道的一切

WebSocket 是一种实时的通信协议,允许双向通信并且具有较低的延迟。在本文中,我们将介绍 WebSocket 的工作原理和使用方法。

用 Apifox,节省研发团队的每一分钟

WebSocket 是什么?你需要知道的一切

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

WebSocket 是什么

WebSocket 是什么
WebSocket

WebSocket 是一种协议,用于在 Web 应用程序中创建实时、双向的通信通道。

传统的 HTTP 请求通常是一次请求一次响应的,而 WebSocket 则可以建立一个持久连接,允许服务器即时向客户端推送数据,同时也可以接收客户端发送的数据。WebSocket 相比于传统的轮询或长轮询方式,能够显著减少网络流量和延迟,提高数据传输的效率和速度。它对实时 Web 应用程序和在线游戏的开发非常有用。

WebSocket 可以在浏览器和服务器之间建立一条双向通信的通道,实现服务器主动向浏览器推送消息,而无需浏览器向服务器不断发送请求。其原理是在浏览器和服务器之间建立一个“套接字”,通过“握手”的方式进行数据传输。由于该协议需要浏览器和服务器都支持,因此需要在应用程序中对其进行判断和处理。

WebSocket 原理

WebSocket 是什么
WebSocket 原理

WebSocket 是 HTML5 开始推出的基于 TCP 协议的双向通信协议,其优势在于与 HTTP 协议兼容、开销小、通信高效。WebSocket 让客户端和服务器之间建立连接,并通过这个持久连接实时地进行双向数据传输。

其实 WebSocket 最主要的特点就是建立了一个可持久化的 TCP 连接,这个连接会一直保留,直到客户端或者服务器发起中断请求为止。WebSocket 通过 HTTP/1.1 协议中的 Upgrade 头信息来告诉服务器,希望协议从 HTTP/1.1 升级到 WebSocket 协议。

WebSocket 建立在 HTTP 协议之上,所有的 WebSocket 请求都会通过普通的 HTTP 协议发送出去,然后在服务器端根据 HTTP 协议识别特定的头信息 Upgrade,服务端也会判断请求信息中 Upgrade 是否存在。 这里面 HTTP 是必不可少的,不然 WebSocket 根本无法建立。特别的,WebSocket 在握手时采用了 Sec-WebSocket-Key 加密处理,并采用 SHA-1 签名。

一旦建立了 WebSocket 连接,客户端和服务器端就可以互相发送二进制流或 Unicode 字符串。所有的数据都是经过 mask 处理过的,mask 的值是由服务器端随机生成的。在数据进行发送之前,必须先进行 mask 处理,这样可以有效防止数据被第三方恶意篡改。

最后需要说明一下的是,WebSocket 的通信协议是基于帧(数据包)的。在数据发送时,一个完整的数据包可以分为多个帧进行发送,而每一个帧都包含了数据的一部分,同时还包含了帧头信息。

WebSocket 和 HTTP 的关系?

WebSocket 是什么
WebSocket 和 HTTP

两种协议都是用于网络通信的

  1. HTTP (Hypertext Transfer Protocol) 是一个基于请求和响应模式的协议,最早用于 Web 应用。
  2. WebSocket 是一种双向通信协议,可以在客户端和服务器之间建立持久的连接,以实现实时通信。
  3. WebSocket 协议在建立连接时需要使用 HTTP 协议。 具体来说,当客户端想要建立 WebSocket 连接时,它们需要通过 HTTP 请求发送一个握手请求。如果服务器同意握手,它将发送一个握手响应,HTTP 协议随后会升级到 WebSocket 协议。
  4. HTTP 和 WebSocket 协议在用途上也有所不同。HTTP 协议主要用于客户端和服务器之间的请求和响应通信,而 WebSocket 协议主要用于实现实时通信和服务器推送。通俗的说,HTTP 协议是“一问一答”,WebSocket 协议是“对话”。

总之,WebSocket 和 HTTP 是两种不同的协议,它们在通信模式、用途和建立连接时都有所不同,但是它们之间也有联系。

知识扩展:WebSocket 与 Socket、TCP、HTTP 的关系及区别

使用 Apifox 调试 WebSocket 服务

如果你写了一个 WebSocket 的服务,想要进行调试,我建议是使用一些比较出色的 API 调试工具,比如 Apifox 这款 API 工具,具备调试 WebSocket 服务的能力~

谷歌插件

Apifox 有 Web端 和 客户端,如果你使用的是 Web端,想要调试本地服务,需要安装 Apifox 的谷歌插件。

下载地址:Apifox 谷歌浏览器插件

WebSocket 是什么
Apifox 插件

创建一个 WebSocket 请求

WebSocket 是客户端与服务端之间的长链接,所以需要先在 Apifox 创建一个 WebSocket 请求,进入到 Apifox 界面

想要创建一个 WebSocket,需要填入对应的请求信息:

  • 点击创建按钮
  • 填入 WebSocket 服务的地址
  • 可以选择填写 Message 和 Params
WebSocket 是什么
创建 WebSocket

Message 和 Params

Message

在 Message 中,你可以填写想要传输给服务端那边的信息,服务端会接收到你传输过去的信息:

WebSocket 是什么
Message

Params

在传输的过程,也可以携带参数,可以在地址上携带 Query 参数,可以携带的数据类型包括:

  • string
  • integer
  • number
  • array
WebSocket 是什么
Params

保存请求

写完所需信息之后,可以点击保存按钮,进行保存,方便下次可继续调用,

WebSocket 是什么

连接、发送 WebSocket 请求

连接 WebSocket 服务

我们想要跟服务端进行 WebSocket 通信,就需要先建立一个 WebSocket 连接,我们只需要点击连接按钮。

WebSocket 是什么
WebSocket 连接

连接成功之后,Apifox 有成功的提示:

WebSocket 是什么
连接成功

服务端那边也会因为连接成功,而做出响应。

发送 WebSocket 请求

接着我们就可以跟服务端进行 WebSocket 通信了。

我们可以使用 Apifox 点击发送按钮向服务端进行发送 Message、Params。

WebSocket 是什么
发送 Message、Params

服务端会接收到 Message、Params:

WebSocket 是什么

与 WebSocket 服务通信

发送之后,服务端也可以向客户端发送信息,例如我这里,我设置服务端每秒向客户端发送当时的时间戳~

这就是 Apifox 的 WebSocket 功能,非常方便。

WebSocket 是什么
与 WebSocket 服务通信

关于 Apifox

作为一个 API 管理平台,Apifox 对于前端、后端、测试都有不同的作用和帮助:

  • 前端: Apifox 提供基于 Swagger 和 OpenAPI 的 API 设计和管理功能,前端设计师可以使用可视化的接口设计工具来创建和修改 API 规范,并根据需要管理和调整 API 文档。设计师可以将文档链接与代码库同步,从而保证前后端的一致性
  • 后端开发人员: Apifox 提供 API 文档的自动化生成功能,可以自动生成 Swagger 和 OpenAPI 格式的文档,后端开发人员可以使用该服务来测试API并调试代码。此外,开发人员还可以使用 Apifox API Gateway 直接访问 API,并进行流量管控和安全鉴定,从而加强 API 的安全性和可靠性
  • 测试团队: Apifox 提供了高效的 API 测试和调试工具,可以生成请求和响应的代码示例、Mock 数据,从而提高测试团队的测试效率和准确性。测试人员可以使用 Apifox 的数据分析和报告功能来监测和评估 API 性能和使用情况,以便于优化和改进 API 的功能和服务体验。

总体来说,Apifox 作为一个 API 管理平台,它为前后端和测试团队提供了一种统一的工具,帮助他们更好的进行 API 接口的设计、开发、测试和管理。

欢迎体验一下,完全免费的哦:在线使用 Apifox

WebSocket 是什么
Apifox 官网