如何在 Express.js 中使用 WebSocket?

WebSocket 协议是一种基于 TCP 协议的双向通信协议,与 HTTP 相比,它更加轻量级、更快速,也更加灵活。Express.js 是一个非常流行的 Node.js 服务器框架,它可以用来构建 Web 应用程序、API 和服务。本文将探讨如何在 Express.js 中使用 WebSocket。

在 Express.js 中安装 WebSocket

Express.js 并不提供对 WebSocket 的原生支持,我们需要安装一个 WebSocket 库。一个流行的 WebSocket 库是 ws,它提供了 WebSocket API 的实现,可以轻松地与 Express.js 集成。可以使用 npm 包管理器安装:

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

在 Express.js 中启用 WebSocket

要在 Express.js 中启用 WebSocket,我们需要在服务器上创建一个 WebSocket 服务器实例,并将其连接到 Express.js 应用程序。这可以通过以下代码完成:

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

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

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

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

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

在上面的代码中,我们通过创建一个 WebSocket.Server 实例来启动 WebSocket 服务器,然后使用 app.ws 方法将服务器连接到 Express.js 应用程序。第一个参数是 URL 路径模式,它指定应该与 WebSocket 服务器实例连接的 Express.js 路由。在本例中,'/' 表示默认路径,将匹配所有 WebSocket 连接。

在 Express.js 中接收和发送 WebSocket 消息

一旦我们启用了 WebSocket,就可以接收和发送消息了。当有客户端通过 WebSocket 连接到 Express.js 服务器时,我们可以发送欢迎消息给客户端,并记录其连接。WebSocket 连接是一个双向通信通道,客户端和服务器可以互相发送消息。

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

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

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

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

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

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

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

在上面的代码中,我们使用 ws.send 方法向客户端发送欢迎消息,然后使用 ws.on('message', ...) 方法接收客户端发送的消息。如果客户端发送了消息,我们将在服务器控制台上记录消息内容。

在 Express.js 中广播 WebSocket 消息

在 WebSocket 连接建立后,我们可以使用 WebSocket 服务器实例的 wss.clients 属性获取所有已连接的客户端。通过对每个客户端调用 client.send 方法,我们可以将同一消息发送给所有客户端,从而实现消息广播。

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

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

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

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

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

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

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

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

在上面的代码中,我们定义了一个 broadcast 函数,该函数迭代所有已连接的客户端,并仅对状态为 WebSocket.OPEN 的客户端调用 client.send,以将消息广播给所有客户端。

结论

本文介绍了如何在 Express.js 中使用 WebSocket。我们安装了 ws 库并在 Express.js 服务器上创建 WebSocket 服务器实例。我们使用 app.ws 方法将服务器连接到 Express.js 应用程序,并使用 ws.send 方法接收和发送消息。同时,我们还学习了如何广播一条消息,并将其发送给所有客户端。WebSocket 是一种强大的双向通信协议,在构建实时 Web 应用程序时使用它。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672062f52e7021665e020136