玩转NODE.JS(四)-搭建简单的聊天室的代码

我们来详细讲解一下“玩转NODE.JS(四)-搭建简单的聊天室”的完整攻略。

准备工作

在开始之前,需要确认你已经具备以下条件:

  • 已经安装了 Node.js 环境。
  • 熟悉基本的 JavaScript 基础语法。
  • 熟悉 HTTP 协议及 WebSocket 协议。

创建项目文件夹

首先创建一个空的项目文件夹,可以在终端中使用 mkdir 命令来创建:

mkdir chatroom
cd chatroom

安装 Express 和 socket.io

在项目文件夹下执行以下命令安装 Expresssocket.io

npm install express socket.io --save

创建服务器

在项目文件夹下,新建一个 index.js 文件,并添加以下代码:

const express = require('express');
const app = express();
const server = app.listen(3000, () => {
  console.log('Server listening at port %d', server.address().port);
});
const io = require('socket.io')(server);

以上代码创建了一个 Express 服务器并监听在 3000 端口,同时也创建了一个 socket.io 服务器。

创建聊天室页面

在项目文件夹下,创建一个 public 文件夹,用来存放静态文件,比如样式、脚本等。在 public 文件夹下,创建一个 index.html 文件,并添加以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Chatroom</title>
</head>
<body>
  <h1>Chatroom</h1>
  <ul id="messages"></ul>
  <form id="form" action="">
    <input id="input" type="text" autocomplete="off">
    <button>Send</button>
  </form>

  <script src="/socket.io/socket.io.js"></script>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
  $(function () {
    var socket = io();
    var form = $('form');
    var input = $('#input');
    var messages = $('#messages');

    form.submit(function (e) {
      e.preventDefault();
      if (input.val()) {
        socket.emit('chat message', input.val());
        input.val('');
      }
    });

    socket.on('chat message', function (msg) {
      messages.append($('<li>').text(msg));
    });

  });
  </script>
</body>
</html>

以上代码创建了一个基本的聊天室页面,其中包含一个文本输入框和一个发送按钮,以及一个消息列表。在这个页面中,我们使用了 jQuery 和 socket.io.js 库来实现消息的发送和接收。

修改服务器代码

在服务器代码中添加以下代码,用于返回静态文件:

app.use(express.static('public'));

同时,修改创建 socket.io 服务器的代码,加入以下代码:

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);
  });
});

以上代码监听了 connection 事件,并在用户连接和断开时输出了相关的信息。同时,监听了 chat message 事件,并将接收到的消息广播给所有的用户。

启动服务器

在终端中执行以下命令启动服务器:

node index.js

然后在浏览器中打开 http://localhost:3000,即可进入聊天室页面,可以在文本框中输入消息并发送,界面上会显示出所有的消息。

示例说明

  1. 如果需要在聊天室中增加新的功能,比如私聊、发送图片等,需要如何修改服务器端代码和客户端代码?
    答:对于私聊功能,可以在客户端发送私聊消息时,在消息中附带上对方用户的 ID,服务器在接收到这样的消息后,会将消息路由到指定的用户;对于发送图片等功能,需要在客户端中使用 FileReader API 将图片转换为二进制流,并使用 socket.ioemit() 方法将二进制流发送到服务器,服务器在接收到图片后,可以存储到服务器上或者转发到其他用户的客户端进行展示。

  2. 如何优化聊天室的性能,防止出现消息堆积、延迟等问题?
    答:可以考虑引入消息队列,对消息进行异步处理,避免出现延迟的情况;同时,在客户端和服务器端都可以对消息进行分页处理,每次加载只返回部分消息,以减轻数据传输的压力;另外,可以使用一些缓存技术,例如将一些消息缓存在内存中,加速读取和推送的速度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:玩转NODE.JS(四)-搭建简单的聊天室的代码 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js中的url.parse方法使用说明

    下面是“node.js中的url.parse方法使用说明”的完整攻略。 一、概述 url.parse方法是Node.js中的系统模块url中的一个非常有用的方法,用于解析URL字符串并返回URL对象。在使用Node.js编写Web应用时,url.parse方法经常被用于处理HTTP请求的URL。 二、语法 url.parse(urlString[, pars…

    node js 2023年6月8日
    00
  • JS中promise化微信小程序api

    下面是详细讲解 “JS中promise化微信小程序api” 的完整攻略。 什么是Promise Promise是es6中新增加的跟异步有关的特性,用于异步操作的管理。使用Promise后,我们可以像同步代码一样来操作异步代码,从而更好的管理异步代码。 在我们使用异步的时候,通常会遇到一些棘手的问题,例如: 回调地狱 (callback hell) 共享作用域…

    node js 2023年6月8日
    00
  • node.js中的path.isAbsolute方法使用说明

    当你在使用Node.js处理文件路径时,你可以使用 path 模块提供的 isAbsolute() 方法来判断一个路径是否为绝对路径。 方法语法 path.isAbsolute(path) 其中,path 是需要判断的路径字符串。 该方法返回一个布尔值,如果某个路径是绝对路径,则返回 true,否则返回 false。 方法示例 下面是两个示例来说明 path…

    node js 2023年6月8日
    00
  • Node.js常用三大模块之path模块

    Node.js中的path模块是一个用于处理文件路径的基础模块,常被用来读取、解析、合并、规范化文件路径等操作。本文将针对path模块的用法进行详细讲解,包括文件路径的表示方式、常用的方法以及示例说明。 文件路径的表示方式 在Node.js中,文件路径可以用以下几种方式进行表示: 相对路径:相对于当前文件所在的目录或工作目录。例如”./test.js”表示当…

    node js 2023年6月8日
    00
  • pm2与Verdaccio搭建私有npm库过程详解

    概述 本教程将介绍如何使用pm2和Verdaccio搭建私有npm库的详细过程。 准备 在开始过程之前,确保你已经安装了pm2和Verdaccio,并有一个npm账户。 安装pm2 PM2是一个Node.js应用程序的生产过程管理器。使用PM2可管理和保持应用程序的活动状态。通过以下命令可全局安装PM2: $ npm install pm2 -g 安装Ver…

    node js 2023年6月8日
    00
  • 四叉树有损位图压缩处理程序示例

    四叉树有损位图压缩处理程序示例攻略 简介 四叉树是一种树型数据结构,它将平面划分为四个象限,每个节点都表示一个矩形区域。通过将图像中的每个像素点添加到四叉树中,可以实现对图像的压缩和处理。本文将介绍如何使用四叉树实现有损位图压缩处理程序。 程序实现步骤 将原图像转换为灰度图像; 将灰度图像转换为二值图像; 对于二值图像,将其划分为若干个相等的矩形区域; 对每…

    node js 2023年6月8日
    00
  • 基于node的cli工具开发使用详解

    基于node的cli工具开发使用详解 什么是CLI工具 CLI指的是命令行界面,是与计算机进行交互的一种方式。CLI工具通常是指在命令行界面下运行的程序,可以执行一些简单的任务,比如新建文件夹、复制文件等等。CLI工具具有操作简便、灵活高效等特点,可以方便程序员进行开发工作。 CLI工具的开发流程 CLI工具的开发需要以下步骤: 安装nodejs环境和npm…

    node js 2023年6月8日
    00
  • node.js 动态执行脚本

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可以让 JavaScript 运行在服务器端。Node.js 动态执行脚本是它的一个非常重要的特性,下面我将详细讲解一下如何实现。 第一步:安装 Node.js 如果你还没有安装 Node.js,请先在官网下载安装最新的稳定版 Node.js:https://nodejs…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部