Socket.IO

17 Mar 2025 | 4 分钟阅读

Socket.io 是一个 JavaScript 库。它是一种客户端和服务器之间进行通信的方式。它允许实时数据流。它是双向通信,意味着我们可以双向传输数据

  • 从客户端到服务器
  • 从服务器到客户端
Socket.IO

Socket.io 有两部分:客户端和服务器端。两部分都有相同的 API。

  • 服务器端库在 node.js 中运行。
  • 客户端库在浏览器中运行。

Socket.IO 非常流行,Trello、Yammer、Amazon、Zendesk 等公司都使用它来开发强大的实时应用程序。Socket.io 是 GitHub 上非常流行的 JavaScript 框架,并且严重依赖 NPM 插件。它在所有浏览器或平台上运行,并且同样注重速度和可靠性。

为什么选择 Socket.IO?

在浏览器和服务器之间进行双向通信非常容易。当发生事件时,服务器会自动将消息发送给客户端。它不需要任何时间戳跟踪。

与传统的 PHP 方式相比,使用 Socket.IO 创建聊天服务器更加容易。如果你想创建一个聊天服务器,你需要用 PHP 编写更多的代码行。

Socket.io 的先决条件

用户应该具备 Node.JSJavascript (JS)HTML 的基本知识。如果用户不熟悉这些语言,我们建议他们先学习这些语言。如果用户了解 sublime text,他们将受益于编写代码。

安装

最新的 Socket.IO 版本是 npm 版本 (3.1.1)。在安装 socket 之前,你需要确保你的系统中是否安装了 Node.js 和 npm。如果你的系统中没有安装 Node.js 和 npm,你需要先安装它们。

请按照以下步骤安装 socket.io

步骤 1: 打开终端并创建一个名为 socketio 的目录


Socket.IO

步骤 2: 在该目录中初始化 npm 包管理器。


Socket.IO

步骤 3: 输入此命令以安装 socket 并保存。


Socket.IO

如果用户安装了特定版本的 socket.io,请使用此命令。

Socket.io 的实时应用

  1. 即时通讯器: 即时通讯器是指无需刷新应用程序和网站即可接收新消息的应用程序,例如 WhatsApp、Facebook Messenger 等。
  2. 推送通知: 推送通知是指当有人在 Instagram 和 Facebook 上给你发的图片和动态打标签时,你会收到通知的应用程序。
  3. 协作应用程序: 协作应用程序是指允许不同用户同时更新同一文档的应用程序,例如 Google Docs。
  4. 在线游戏: 在线游戏应用程序是指帮助多个用户之间建立双向通信的应用程序。实时在线游戏的例子有 Pubg、Call of Duty、Among Us、Fortnite 等。

Socket.IO 的特性

  1. 可靠性: 它依赖于 Engine.IO,Engine.IO 会建立一个长时间运行的轮询连接,然后再尝试升级到更好的“测试”传输,例如 WebSocket。
  2. 自动重连支持: 断开连接的客户端会一直尝试重新连接,直到服务器再次可用。
  3. 断开连接检测: socket.io 的心跳机制是 engine.io。它让服务器和客户端都知道何时没有人响应。
  4. 二进制支持: 可以发出任何可序列化的数据结构,包括
  5. 浏览器中的 ArrayBuffer 和 Blob
  6. Node.js 中的 ArrayBuffer 和 Buffer
  7. 多路复用支持: Socket.IO 允许你创建多个命名空间来分离应用程序中的关注点,它们将充当独立的通信通道,但共享相同的底层连接。

事件处理

Socket.io 基于某些事件进行服务。socket 对象可用于访问服务器端和离线端的一些保留事件。

以下是服务器端事件

  • 连接
  • 信息
  • 重新连接
  • 断开连接
  • 离开
  • 连接
  • Ping

以下是客户端事件

  • 连接
  • 连接错误
  • 连接超时
  • 重新连接

示例

在此示例中,我们使用了连接和断开连接事件来记录用户何时连接和断开连接。

在客户端连接四秒后,服务器将向客户端发送一个名为 message 的事件。

现在,我们需要代表我们的客户端处理这个事件,所以修改 index.html 的 script 标签以包含以下代码


Socket.IO

当服务器在 4 秒后向客户端发送 message 事件时,客户端将处理该事件并产生输出。输出如下面的截图所示。

Socket.IO
下一主题同步电机