WebSocket是一种用于在客户端和服务器之间创建双向通信通道的协议。它们对于即时消息、多玩家游戏等实时网络应用程序非常重要。
什么是WebSocket?
WebSocket连接客户端和服务器,允许双向通信。它是一种应用层协议,可以通过互联网创建实时的双向通信通道。
WebSocket协议定义了两个实体如何建立套接字连接。它还描述了这些实体如何通过发送双向消息进行通信。
WebSocket是对HTTP的补充,它们与HTTP处于同一抽象层级。然而,与传统HTTP不同,浏览器会保持与服务器的开放连接,直到一方关闭连接或超时。

许多流行的应用程序(包括 Facebook Chat、Google Hangouts 和 Slack)都使用 WebSockets。WebSocket API 也因其简单性而受到开发人员的欢迎,但乍一看可能会有点令人困惑。
WebSockets 的重要性:WebSockets 的工作原理
即使您不使用 WebSocket,您也可能听说过它。它是最近流行的一种网络通信形式。这是因为它们能够在客户端和服务器之间来回发送信息。
WebSockets 允许服务器将内容发送到客户端,而无需浏览器请求。这使其成为从服务器更新的应用程序(例如游戏或金融交易平台)的理想选择。它们的用途还包括聊天应用程序作为 TCP 上的替代传输层。
我们现在将看到 WebSocket 的主要用途。
开发电脑游戏
在游戏应用开发过程中,服务器必须接收数据,而无需从 UI 请求更新。无需修改游戏应用 UI,WebSocket 即可实现此目的。
构建实时 Web 应用程序
WebSocket 可用于开发支持无缝可视化客户端数据的实时应用程序。它们简化了通过现有开放连接连续推送或流式传输这些数据的过程。这样,使用 WebSocket 可以实现高速数据传输,并最大限度地提高应用程序的效率。
开发聊天应用程序
聊天开发人员使用 WebSockets 执行单次交易和消息传播等任务。由于相同的 WebSocket 连接可以实现消息交换,因此通信更加轻松快捷。
WebSocket 的缺点
WebSocket 可能难以调试和扩展,特别是如果您不熟悉该技术。这是因为 WebSocket 跨 TCP 端口运行,这意味着每个 WebSocket 连接都需要其 WebSocket 端口号。因此,服务器很容易因连接过多而过载。如果您想同时并行连接 500 个客户端(例如),您的服务器将需要总共 50 个可用的端口号!
此外,有些浏览器根本不支持 WebSocket(例如 Opera Mini)。如果您想确保每个人都能轻松使用您的应用或网站,那么最好不要使用 WebSocket,否则用户将无法连接,无法访问某些功能。
什么是 WS 协议?
WS 协议不应与Internet 协议混淆。WebSocket 协议于 2011 年标准化。它是一种网络通信协议,允许客户端(在本例中为浏览器)与服务器之间进行双向通信。您可以将其视为 HTTP 的扩展 – 但它们不是在单独的数据包中来回发送数据,而是在同一个数据流中。
市场上所有主流浏览器(包括 Google Chrome、Mozilla Firefox、Safari 和 Microsoft Edge)都使用 WS 协议。但 Internet Explorer 11 尚不支持某些功能(例如 CORS)。
WebSocket 协议规范(WPSS) 根据两个旨在解密和加密连接的新统一资源标识符 (URI) 片段对 WSS (WebSocket 安全) 和 WS (WebSocket) 进行分类。
使用 WebSocket 进行实时通信
WebSockets 对于实时通信非常有用。它们允许您在运行网站的服务器和使用网站的访问者的浏览器之间建立“持久连接”。

这意味着建立连接后,您可以在两者之间来回发送消息。这样,就无需每次关闭或打开新连接 – 就像打开“电话线”一样,建立连接后无需任何人接听!
WebSocket 连接握手
WebSocket 连接以 WebSocket 握手开始,使用新方案 WebSocket (WS) 或 WebSocket Secure (WSS)。如果您想知道 WebSocket WSS 是否可用。
客户端打开与服务器的 WebSocket TCP 连接并发送握手消息。服务器响应握手消息以建立连接。此过程是 HTTP/2 或 SPDY 的一部分,因此它不是 WebSocket 所特有的;两种协议都使用它。
在传输握手消息之前,HTML 加载之前浏览器选项卡中的 HTTP 标头。这意味着您在浏览器的地址栏中唯一能看到的是“WebSocket 连接握手”。在连接之前,“WebSocket 连接握手”后面会有一些毫无意义的数字。一旦双方交换了第一条消息并就如何通信达成一致,他们就会发送有关自己的信息:
- 客户端 IP 地址(或主机名)
- 支持的协议版本(HTTP/1 或 HTTP/2?SPDY 3 与 4?)
- 双方支持的加密方法(如果适用)
如何创建 WebSocket 服务器?
WebSocket 是一种支持服务器和客户端之间实时数据交换的协议。WebSocket 比 HTTP 具有多项优势,例如性能更佳、延迟更低。
创建 WebSocket 服务器需要满足以下条件:
1.下载并安装最新版本的 Node.js
Node.js 是一个跨平台的开源运行时环境,可执行 JavaScript 代码。您需要确保在计算机上安装 Node.js。如果没有,您可以从 Node.js 网站下载它。
下载 Node 后,打开终端窗口并输入“node -v”(不带引号)。这将为您提供系统 Node 实用程序的版本号,您可以在故障排除时使用该版本号。
2.使用 npm 安装 Express,以使用 Node.js 创建 Web 应用程序。
使用 npm 安装 Express 有助于使用 Node.js 构建 Web 应用程序。如果要安装 Express,有两种方法可以做到。第一种方法是在终端中输入以下内容来创建一个新的 Node 项目:npm init -y
这将创建一个新的 package.json 文件,其中包含一些默认设置,因此您可以通过输入 npm install 并运行应用程序来开始使用。第二种选择是使用位于 /express-generator/express-nodejs 中的快速入门模板。如果您不熟悉从头开始创建 Node 项目,这是设置 Express 的最快方法。您可以通过打开终端并输入以下内容来使用此模板:cd express-generator/express-nodejs ./bin/express setup-s
这将安装 Express 并创建一个包含简单 Express 应用程序的新目录结构。然后,您可以输入 npm install 并运行您的应用程序。请注意,此模板使用 /etc/express 中的配置文件,如果您熟悉从头开始配置 Node 项目,则可以使用这些配置文件。
3.为WebSocket服务器创建索引文件
接下来,是时候在本地目录中为 WebSocket 服务器创建一个名为 app.js 的索引文件了。这样,我们就可以用一个命令从任何地方运行我们的程序了!在此文件中,我们将导入一些模块来创建 WebSocket 服务器:
| “`javascript const ws = require(‘ws'); import http = require(‘http'); import fs = require(‘fs'); “` |
Websocket 与 HTTP:有什么区别?
让我们从一个简单的比较开始:HTTP 和 Websocket。
HTTP 代表超文本传输协议,是所有现代浏览器用于请求网页并将信息发送回服务器的协议。
技术
Websocket 是一项新技术,允许服务器无需浏览器请求即可将内容发送到客户端。
这有助于在浏览器关闭后仍保持连接。此功能仅通过 CORS(跨源资源共享)的轮询或长寿命 HTTP 连接才能实现。
请求
Websockets 与 HTTP 的主要区别在于,服务器无需等待响应即可处理请求。这使得可以随时发送消息,而不像 HTTP 那样具有请求-响应周期。
如何使用 WebSocket?
由于 WebSocket 协议的标准化,它与任何编程语言或框架都相关。例如,如果您想通过 WebSocket 服务器发送数据,则可以使用 Python、JavaScript 甚至 PHP(带有 SocketIo)。要从 WebSocket 客户端接收数据,您需要使用 NodeJS 或 JavaScript。
我们将重点关注这些技术如何作为应用程序堆栈的一部分协同工作以及它们如何相互作用。
Websockets 有助于维持持久连接,从而实现客户端和服务器之间的双向数据交换。这样,服务器就可以将内容发送到客户端,而无需浏览器请求。
Websockets 是 Web 开发领域的一项新兴技术,由 Google 于 2005 年首次提出,并由 RFC 6455 标准化。随着 Facebook、Twitter 和 Wikipedia 等公司在其应用程序中使用 WebSockets,其使用量正在不断增长。
Proxy 和 Websocket 什么关系?
代理是一种充当用户和互联网之间中介的软件。它们有助于隐藏用户身份,并允许他们访问互联网上的内容,否则他们无法从自己的位置访问这些内容。
WebSocket 是一种通信协议,可通过单个 TCP 连接实现实时双向数据传输。代理和 WebSocket 之间的关系是,它们都提供双向数据传输,但方式不同。代理接受用户的请求,然后代表这些用户获取数据。相比之下,WebSocket 可以在数据可用时立即提供数据,而无需等待客户端的请求。
总 结
我们希望你现在对WebSocket是什么以及它们如何工作有了更好的理解。WebSocket是创建实时应用程序的绝佳方式。随着越来越多的人意识到其潜力,它们的受欢迎程度只会在未来增长。你可以使用WebSocket反向代理在数据可用时立即访问数据,而无需等待来自客户端的请求,无论你的所在地有什么限制。