Express.js 实现简单聊天室解决方案

阅读时长 8 分钟读完

介绍

Express.js 是一个流行的 Node.js 框架,用于构建 Web 应用程序和 API。它易于使用,灵活性高,可以通过中间件扩展,并支持多种后端数据库。本文将介绍如何使用 Express.js 构建一个简单的聊天室,为读者提供理解和应用 Express.js 的指导。

前置知识

本文假定读者已熟悉以下技术和工具:

  • Node.js
  • NPM
  • JavaScript
  • HTML 和 CSS

实现

为了实现简单的聊天室,需要以下基本功能:

  • 用户登录和退出
  • 在线用户列表
  • 发送和接收消息

第一步:安装和初始化项目

首先,我们需要安装 Express.js 并创建一个项目目录。使用以下命令可以快速创建项目:

接着,我们创建一个 server.js 文件,用于启动服务器。 在该文件中,使用以下代码初始化 Express.js:

使用 app.listen 方法启动服务器,监听端口 3000。现在访问 http://localhost:3000 将看到 Express.js 的默认欢迎页面。

第二步:创建用户登录和退出功能

为了创建用户登录和退出功能,我们需要创建一个 HTML 页面和一些路由。一种简单的方法是使用模板引擎 EJS

首先,安装 EJS:

接着,在项目根目录创建一个 views 目录,创建一个 login.ejs 文件,用于显示登录表单:

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

这将展示一个简单的登录表单。在server.js,为 /login/logout 添加路由:

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

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

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

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

这里我们设置了 EJS 模板引擎并在根路由上使用它来渲染 login.ejs。在 /login 路由上,我们获取用户提交的用户名并将其添加到在线用户列表中。在 /logout 路由上,我们获取查询参数中的用户名并将其从在线用户列表中删除。

第三步:创建在线用户列表

为了创建在线用户列表,我们需要保存在线用户的数据。一种简单的方法是使用一个数组来保存。

首先,为了跟踪在线用户,我们在 server.js 中创建一个变量:

/login 路由上,我们将新用户添加到 onlineUsers 数组中:

为了在聊天页面中显示在线用户列表,我们创建一个 chat.ejs 文件,并渲染 onlineUsers 数组。下面是 chat.ejs 文件的代码:

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

server.js 中渲染 chat.ejs 文件,并将 onlineUsers 数组传递给模板:

现在,当用户登录后,将看到一个 Chat Room 标题,用户列表和当前用户。

第四步:发送和接收消息

要实现聊天功能,我们需要使用 WebSockets。一种流行的库是 socket.io

首先,安装 socket.io:

server.js 中启用 socket.io 并监听事件:

当客户端连接到服务器时,我们在控制台上显示一条消息。接下来,我们需要添加发送和接收消息的功能。

chat.ejs 文件中,创建一个输入框和一个提交按钮,用于发送消息:

接着,在 server.js 中监听 message 事件并广播到所有客户端:

当有客户端发送消息时,我们将其广播到所有连接的客户端。现在,我们需要在客户端上监听 message 事件并显示消息。

chat.ejs 文件中,使用以下代码创建消息列表:

接着,在 public 目录下创建一个 app.js 文件,并在 chat.ejs 文件中添加以下脚本:

app.js 文件中,连接到服务器并发送消息:

当客户端发送消息时,我们调用 socket.emit 发送 message 事件,同时清除输入框。

最后,在 app.js 文件中监听 message 事件:

当客户端接收到消息时,我们在消息列表中创建一个新的列表项。

总结

在本文中,我们学习了如何使用 Express.js 和 socket.io 构建简单的聊天室。我们涵盖了用户登录和退出、在线用户列表、发送和接收消息等功能,并提供了示例代码。使用这些技术,读者可以构建更复杂的实时 Web 应用程序和 API。

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

纠错
反馈