使用 Fastify 构建 WebSockets 服务器的完整教程

阅读时长 6 min read

WebSockets 是一种实现客户端与服务器之间双向实时通信的协议。对于许多应用程序来说,WebSockets 是一种非常有用的技术,因为它可以在无需刷新页面的情况下向客户端推送实时数据。在本文中,我们将探讨如何使用 Fastify 构建一个 WebSockets 服务器,同时提供完整的示例代码和详细的教程。

什么是 Fastify

Fastify 是一个快速、低开销的 Web 框架,旨在提供良好的性能和可扩展性。它可以用于构建各种不同类型的 Web 应用程序,包括静态网站、API、WebSockets 服务器等。

Fastify 采用了一些早期的 Web 框架所不具备的最新技术,例如使用 Node.js V8 的最新版本,以及最新的 HTTP/2 标准等。这些技术的使用使得 Fastify 具有卓越的性能,是一个非常值得尝试的框架。

WebSockets 服务器的实现

下面我们将开始构建一个 WebSockets 服务器,主要分为以下几个步骤:

  1. 了解如何创建一个 Fastify 服务器

  2. 配置 WebSockets 服务器

  3. 编写 WebSockets 事件处理程序

创建 Fastify 服务器

在使用 Fastify 构建 WebSockets 服务器之前,我们需要先创建一个 Fastify 的 HTTP 服务器。请按照以下步骤创建 Fastify 服务器:

-- -------------------- ---- -------
----- ------- - ---------------------

---------------- ----- ----- ---- -- -
  ------ - ------ ------- -
---

-------------------- ----- -- -
  -- ----- -
    ----------------------
    ---------------
  -
--

现在,您已经创建了一个简单的 Fastify HTTP 服务器。您可以运行它来确保一切正常,通过访问 http://localhost:3000 检查反馈是否包含了 {'hello':'world'}结果。

配置 WebSockets 服务器

Fastify 具有一个名为 fastify-websocket 的插件,可以轻松地将 WebSockets 功能添加到您的应用程序中。请按照以下步骤安装和配置 Fastify-WebSocket 插件:

  1. 首先使用 npm 安装 fastify-websocket 插件:
  1. 导入 fastify-websocket 插件,并将其注册到 Fastify 服务器中:
-- -------------------- ---- -------
----- ------- - ---------------------
----- --------- - -----------------------------

----------------------------

---------------- ----- ----- ---- -- -
  ------ - ------ ------- -
---

-------------------- ----- -- -
  -- ----- -
    ----------------------
    ---------------
  -
--

至此,我们已经将 fastify-websocket 插件添加到了 Fastify 服务器中,可以开始编写 WebSockets 事件处理程序了。

编写 WebSockets 事件处理程序

在我们继续编写 WebSockets 事件处理程序之前,我们需要明确定义我们要建立什么类型的 WebSockets 连接。在本示例中,我们将创建一个简单的聊天室,用户通过 WebSockets 连接发送消息,服务器将这些消息广播到所有连接的客户端。

下面是实现 WebSockets 聊天室的完整代码:

-- -------------------- ---- -------
----- ------- - ---------------------
----- --------- - -----------------------------

----------------------------

---------------- ----- ----- ---- -- -
  ------ -
    ------ -------
  -
---

------------------- -- -
  -- ----- ----- ----

  ---------------------------------- -------- -- -
    -------------------- --------- -- -
      ------------------------------------------ -- -
        -- ------------------ --- --------------- -
          ---------------------
        -
      ---
    ---
  ---
---

-------------------- ----- -- -
  -- ----- -
    -----------------------
    ----------------
  -
---

现在,我们的 WebSockets 服务器已经完成了编写,让我们更详细地了解一下它是如何工作的。

在代码示例中,我们使用 Fastify 的 ready() 方法来确保 WebSocket 服务器已完全启动并且 Fastify 的实例已准备好处理连接。然后,我们注册了 fastify-websocket 插件,并使用 on() 方法添加了一些事件处理程序。

在我们的服务器中,我们使用了 on() 方法来侦听connection事件。在建立连接的 moment,我们添加了一个另一个事件处理程序,用于侦听从客户端发送来的消息。当我们接收到消息时,我们将它广播给与该服务器建立连接的所有客户端。最后,我们为服务器定义了端点 /,以便提供 HTTP/WS 协议,以使浏览器能够建立并维护连接。

至此,我们的 WebSockets 服务器已经编写完成。可以通过通过运行以下命令在本地上运行它:

现在,打开两个网页,而其中一个需要输入另一个网页的 URL,以实现这两个网页之间 WebSockets 的通信。现在任意一个窗口可以通过另一个窗口向服务器发送消息,并在所有窗口之间广播。刷新页面后,将无法保持之前发送的消息。

结语

Fastify 可以帮助我们轻松构建 WebSockets 服务器,而且该框架具有良好的性能和可维护性。在这篇教程中,我们了解了如何使用 Fastify 和 fastify-websocket 构建 WebSockets 服务器来实现实时应用程序。希望本文对您有所帮助,有更多深度的学习以及指导意义。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67820b08935627c900f4b917

Feed
back