使用 Node.js 和 Socket.io 构建实时聊天应用程序

这篇具有很好参考价值的文章主要介绍了使用 Node.js 和 Socket.io 构建实时聊天应用程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习的知识点

主要是通过简易聊天室熟练掌握 Socket.io 相关方法和运行的过程。

需要的插件

Socket.io

梳理应用步骤

在进行实现简易实时聊天室之前,我们先梳理一下我们需要的功能和流程。

所需功能:

  • 1、告知用户已经连接到聊天室
  • 2、自己发送时,页面展示对应的消息展示,而对方看的到信息是谁发送了什么
  • 3、当用户关闭页面后,其他人会收到用户下线的通知

系统开发流程:

  • 1、搭建 socketio 服务
  • 2、创建服务端与客户端成对的消息交互事件
  • 3、创建服务端与客户端用户上线和下线交互事件

大致实现步骤

1、搭建实时聊天应用的页面,具体代码片段如下:

<div id="message_box"></div>
<form id="send_box">
  <input type="text" id="message_input" />
  <button type="submit" id="send_button">发送</button>
</form>

2、搭建 socketio 服务

  • 1、安装所需插件

安装命令 npm install socket.io

  • 2、创建 socket.io 服务
const io = require("socket.io")(3000);
  • 3、创建 socket.io 连接

当我们创建了 socket.io 的服务后,我们还需要创建 io 连接后才能向客户端发送消息和定义消息监听。创建连接的具体代码如下:

io.on("connection", (socket) => {});
  • 4、创建对应服务端消息监听事件和发送对应消息给客户端

创建好 socket.io 连接后,我们就可以自定义客户端发送消息的监听事件,并且接收到消息后我们可以使用broadcast.emit方法来发送消息给。具体的代码如下:

/**
 * 服务端创建名为send-chat-message的消息监听
 * 客户端接收chat-message类的消息
 */
socket.on("send-chat-message", (message) => {
  console.log(message);
  socket.broadcast.emit("chat-message", message); // 发送消息给客户端
});
  • 5、搭建 socketio 的客户端

搭建 socketio 的客户端只要引入对应的依赖文件和连接对应的 socketio 服务就可以,具体的代码如下:

<!-- 引入socketio所需的依赖 -->
<script defer src="http://localhost:3000/socket.io/socket.io.js"></script>
const socket = io("http://localhost:3000"); // 与socketio服务端进行连接
  • 6、客户端向 socketio 服务端发送消息
socket.emit("send-chat-message", message); // 向socket.io服务器发送消息
  • 7、服务端监听用户进入聊天室和告知客户端信息
socket.emit("new-user", useName); // 客户端发送姓名到执行的socketio接收器中

// 监听客户端发送过来的new-user类的消息
socket.on("new-user", (name) => {
  users[socket.id] = name;
  socket.broadcast.emit("user-connected", name);
});

核心代码片段

客户端

const socket = io("http://localhost:3000");

const useName = prompt("您的姓名是:");
appendMessage("你已经加入聊天系统");
socket.emit("new-user", useName);

socket.on("chat-message", (data) => {
  appendMessage(`用户${data.name}说了: ${data.message}`);
});

socket.on("user-connected", (data) => {
  appendMessage(`${data} 已连接`);
});

socket.on("user-disconnected", (data) => {
  appendMessage(`${data} 已下线`);
});

messageForm.addEventListener("submit", (e) => {
  e.preventDefault();
  const message = messageInput.value;
  appendMessage(`您发了:${message}`);
  socket.emit("send-chat-message", message); // 向socket.io服务器发送消息
  messageInput.value = "";
});

服务端

const io = require("socket.io")(3000);

io.on("connection", (socket) => {
  socket.on("new-user", (name) => {
    users[socket.id] = name;
    socket.broadcast.emit("user-connected", name);
  });

  socket.on("send-chat-message", (message) => {
    socket.broadcast.emit("chat-message", {
      message: message,
      name: users[socket.id],
    });
  });

  socket.on("disconnect", () => {
    socket.broadcast.emit("user-disconnected", users[socket.id]);
    delete users[socket.id];
  });
});

完整代码

完整代码示例下载文章来源地址https://www.toymoban.com/news/detail-548643.html

到了这里,关于使用 Node.js 和 Socket.io 构建实时聊天应用程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 超详细--vue3中使用socket.io-client + nodejs使用socket.io 实现实时通信

    第一步:安装插件 第二步:组件中引入使用 第一步:安装插件 第二步:在文件中引入使用

    2024年02月13日
    浏览(37)
  • vue和node使用websocket实现数据推送,实时聊天

    需求:node做后端根据websocket,连接数据库,数据库的字段改变后,前端不用刷新页面也能更新到数据,前端也可以发送消息给后端,后端接受后把前端消息做处理再推送给前端展示 使用node ./app.js运行项目 在需要使用websocket连接的页面引入 默认如下: id为243 在数据库改为

    2024年02月15日
    浏览(40)
  • websocket实时通讯和socket.io实时通信库的使用;心跳机制与断线重连

    https://zh.javascript.info/websocket WebSocket 是一种网络通信协议,就类似于 HTTP 也是一种通信协议。 为什么需要 WebSocket? 因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 代码解析: 创建WebSocket实例:通过 new WebSocket() 创建一个WebSocket实例。在括号中传入服务器的URL,该URL指定了

    2024年02月16日
    浏览(34)
  • 使用 YOLOv8 和 Streamlit 构建实时对象检测和跟踪应用程序:第 1 部分-介绍和设置

    示例:图像上的对象检测 实时视频中的目标检测和跟踪是计算机视觉的一个重要领域,在监控、汽车和机器人等各个领域都有广泛的应用。 由于需要能够识别和跟踪对象、确定其位置并对它们进行实时分类的自动化系统,对视频帧中的实时对象检测和跟踪的需求日益增加。

    2024年02月17日
    浏览(33)
  • 如何使用Vue.js构建桌面应用程序

    Vue.js是一个流行的JavaScript框架,可以用于构建Web应用程序。但是,Vue.js也可以用于构建桌面应用程序。本文将介绍如何使用Vue.js构建桌面应用程序,包括以下步骤: 1. 选择一个Vue.js框架:选择一个适合你的Vue.js框架。我们推荐使用Electron,因为它是最流行的桌面应用程序框架

    2024年02月15日
    浏览(42)
  • 微信小程序使用stomp.js实现STOMP传输协议的实时聊天

    简介: stomp.js:uniapp开发的小程序中使用 stomp.js:官网 stomp.js:GitHub 本来使用websocket,后端同事使用了stomp协议,导致前端也需要对应修改。 如何使用 在static/js中新建stomp.js和websocket.js,然后在需要使用的页面引入监听代码+发送代码即可 代码如下: 位置:项目/pages/static/

    2024年02月11日
    浏览(50)
  • uniapp微信小程序使用stomp.js实现STOMP传输协议的实时聊天

    简介: stomp.js:原生微信小程序中使用 stomp.js:官网 stomp.js:GitHub 本来使用websocket,后端同事使用了stomp协议,导致前端也需要对应修改。 如何使用 1.yarn add stompjs 2.版本 “stompjs”: “^2.3.3” 3.在static/js中新建websocket.js,然后在需要使用的页面引入监听代码+发送代码即可 代

    2024年02月11日
    浏览(36)
  • 如何在Node.js中使用WebSocket实现实时通信

    在Web应用程序中,实时通信已经成为一种必不可少的功能。WebSocket是一种基于TCP的协议,它提供了双向通信的能力,使得实时通信变得更加容易。Node.js提供了一个内置的WebSocket模块,使得开发实时通信应用程序变得非常简单。在本文中,我将介绍如何在Node.js中使用WebSocket实

    2024年02月14日
    浏览(39)
  • 【Bun1.0】使用 Bun.js 构建快速、可靠和安全的 JavaScript 应用程序

    Bun 是一个现代的JavaScript运行环境,如Node, Deno。主要特性如下: 启动速度快。更高的性能。完整的工具(打包器、转码器、包管理)。 https://bun.sh 与传统的 Node.js 不同,Bun.js 提供了一些新的特性和功能,例如: 更快的启动速度、更小的内存占用、更好的异常处理机制等等。

    2024年02月09日
    浏览(31)
  • 如何使用websocket+node.js实现pc后台与小程序端实时通信

    实现功能:实现pc后台与小程序端互发通信能够实时检测到 1.安装ws依赖 2.创建index.js 3.打开终端,启动服务 这里是手动点击连接按钮,发起的websocket连接,可自行更改到其他合适的地方连接websocket 1.创建两个按钮,连接按钮,发送按钮 2.定义事件,连接ws

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包