Node.js + Socket.io 实现在线用户列表

阅读时长 5 分钟读完

介绍

在 Web 应用中,实现在线用户列表是一个常见的需求。本文将介绍如何使用 Node.js 和 Socket.io 实现在线用户列表。

Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,可以在服务器端运行 JavaScript 代码。Socket.io 是一个实时通信库,可以在客户端和服务器之间建立实时、双向的通信。

在本文中,我们将使用 Node.js 和 Socket.io 来实现在线用户列表,用户可以在 Web 应用中看到当前在线的用户。

实现

安装依赖

首先,我们需要安装 Node.js 和 Socket.io。可以在官网上下载 Node.js,并使用以下命令安装 Socket.io:

创建服务器

我们需要创建一个 Node.js 服务器来处理客户端连接和消息。以下是一个简单的服务器代码:

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

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

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

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

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

上述代码创建了一个 HTTP 服务器,并使用 Socket.io 包装它。当一个客户端连接到服务器时,会触发 connection 事件。我们可以在事件处理程序中打印客户端的 ID。当客户端断开连接时,会触发 disconnect 事件。

实现在线用户列表

现在,我们可以开始实现在线用户列表。我们需要跟踪每个连接到服务器的客户端,以便在需要时更新在线用户列表。

以下是一个实现在线用户列表的代码:

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

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

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

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

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

上述代码使用了 ES6 的 Set 类型来存储在线用户的 ID。当一个客户端连接到服务器时,我们将其 ID 添加到 Set 中,并使用 io.emit 方法向所有客户端广播在线用户列表。当一个客户端断开连接时,我们将其 ID 从 Set 中删除,并再次使用 io.emit 方法向所有客户端广播在线用户列表。

创建客户端

最后,我们需要创建一个客户端来连接到服务器并显示在线用户列表。以下是一个简单的客户端代码:

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

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

上述代码使用 Socket.io 客户端库连接到服务器,然后监听 users 事件。当客户端收到在线用户列表时,它会清空用户列表并重新创建每个用户的列表项。最后,它将列表项添加到 HTML 中的 ul 元素中。

运行应用

最后,我们需要运行服务器和客户端。可以使用以下命令运行服务器:

然后,打开浏览器并访问 http://localhost:3000,即可看到在线用户列表。

结论

本文介绍了如何使用 Node.js 和 Socket.io 实现在线用户列表。我们创建了一个 Node.js 服务器来处理客户端连接和消息,并使用 Socket.io 实现了实时通信。最后,我们创建了一个简单的客户端来连接到服务器并显示在线用户列表。这个例子可以帮助你了解如何使用 Node.js 和 Socket.io 构建实时应用。

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

纠错
反馈