如何在 Express.js 中使用 Websockets

阅读时长 8 分钟读完

在现代的 Web 应用程序中,越来越多地使用实时通信。Websockets 是一个非常重要的技术,可以获得实时通信的能力。使用 Node.js 中的 Express 框架,我们可以轻松地实现 Websockets。

本文将介绍如何使用 Express.js 中的 Websockets,包括基本用法和示例代码,以及一些有用的技巧和建议。让我们开始吧!

WebSocket 是什么?

WebSocket 是一种通信协议,允许浏览器和服务器之间实现双向通信。WebSocket 可以在服务器和客户端之间创建一个持久连接,可以实时地传输数据。

与传统的 HTTP 协议相比,WebSocket 有以下优点:

  • 双向通信,可以实时推送数据到客户端
  • 比 HTTP 更轻量级,性能更好

使用 Express.js 实现 WebSocket

在 Express 中,我们可以使用一个名为 ws 的 WebSocket 库。这个库可以帮助我们创建 WebSocket 服务器。

首先,我们需要使用 npm 安装 ws 库:

创建 WebSocket 服务器的代码如下:

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

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

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

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

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

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

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

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

通过监听 wss 对象的 connection 事件,我们可以处理新的 WebSocket 连接。对于每个连接,我们可以设置消息监听器,以便处理从客户端接收到的消息。当连接关闭时,我们可以清理资源。

WebSocket API

WebSocket API 提供了一些非常有用的方法和事件监听器,可用于处理 WebSocket 连接。

事件监听器

事件监听器可用于处理 WebSocket 连接的状态变化:

  • open:当连接打开时触发
  • message:当从另一端接收到消息时触发
  • error:当出现错误时触发
  • close:当连接关闭时触发

这些事件可以通过 ws 对象的 on 方法来监听。

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

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

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

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

方法

WebSocket API 还提供了一些方法来使用 WebSocket 连接:

  • send():向另一端发送消息
  • close():关闭连接

示例代码

下面是一个简单的示例,演示如何使用 Express.js 和 WebSockets 创建一个简单的聊天应用程序:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在这个例子中,我们创建了一个简单的聊天应用程序。每当接收到消息时,我们将其广播给所有连接的客户端。客户端使用 JavaScript WebSocket API 连接到服务器,并显示所有接收到的消息。

总结

本文中,我们介绍了如何在 Express.js 中使用 WebSockets,包括基本用法和示例代码。WebSockets 是实现实时通信的重要技术,使得在客户端和服务器之间建立双向连接成为可能。在实现时,我们可以使用 ws 库,并使用 WebSocket API 提供的方法和事件来处理连接。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c8d3be5ad90b6d0414ce83

纠错
反馈