从零开始搭建 web 聊天室(一)

article/2025/10/14 1:29:07

本篇将介绍如何快速、简便地使用 socket.io 库搭建一个 web 在线聊天室。前端并没有使用任何框架。后端使用 express 框架搭建简易的后端。

socket.io 库本质上是基于 websocket 上进行封装。改变了以往只能前端发送请求,后端才能返回给前端信息,这样的一问一答形式。实现了前后端双向通信,即后端也可以主动 push 信息到前端。websocket 尤其适用于在线聊天或者实时交互的场景。已经广泛用于直播平台、视频平台等。

本篇实现:

最基本的前后端信息交互。

代码地址:

https://github.com/billmian/socketio-chat

技术栈:

  • 前端 html + socketio
  • 后端 express 框架

首先先创建 index.html 和 index.js 两个文件

index.html 文件

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script src="/socket.io/socket.io.js"></script><script>var socket = io();socket.emit("newChatMessage", "这是传送给后端的消息");socket.on("broadCastMessage", (msg) => {console.log("这里输出后端返回的消息", msg);renderContent(msg);});</script>
</html>

index.js 文件中:
先使用 npm 安装库 socket.io express

npm install socket.io  express --save
var express = require("express");
var app = express();
var http = require("http").createServer(app);var io = require("socket.io")(http);
app.get("/", (req, res) => {res.sendFile(__dirname + "/index.html");
});io.on("connection", (socket) => {socket.on("newChatMessage", (msg) => {console.log("message: " + msg);io.emit("broadCastMessage", "后端传过来的消息");});
});
http.listen(3000, () => {console.log("listening on *:3000");
});

然后在文件目录下运行

node index.js

然后在浏览器中打开 http://localhost:3000
然后使用 F12 打开控制台可以看到

在这里插入图片描述
前端已经输出了后端传过来的消息

再回到运行 nodejs 的终端
在这里插入图片描述
可以看到后端也接受到了前端传来的消息。

至此我们实现了使用 socketio 进行了前后端的 websocket 的交互。


http://chatgpt.dhexx.cn/article/lmiXaPew.shtml

相关文章

基于socket.io的web聊天室

基于socket.io的web聊天室 一、 项目介绍 该项目使用node.js作为后端服务器框架&#xff0c;并利用socket.io来实现web聊天室功能。socket.io是由 JavaScript 实现的基于Node.js架构体系的用于实时通信的开源框架&#xff0c;它包括了客户端的 JavaScript 库和 服务器端的 No…

一个轻量级多功能免费开源web聊天室

一个轻量级多功能免费开源web聊天室&#xff0c;轻量级实用功能多而强悍的聊天室系统 版本特点&#xff1a; 支持图文发送,兼容QQ内置,微信内置,pc等浏览器 无需服务端操作,phpmysql高效运行,无需第三方插件 高效极快的运行速度 聊天室bbs推送 多功能聊天室 支持一键粘贴网页图…

web聊天室项目开发过程及重难点整理

目录 一、需求分析二、业务背景1.张三要发消息给李四2.WebSocket实现消息推送流程 三、前后端接口和数据库系统设计1.用户相关的接口2.频道相关接口3.数据库表的设计 四、功能交互实现原理及代码展示1.输入url访问主页2.调用检查登陆状态接口2.1参数ok&#xff1a;true时显示登…

django WEB聊天室项目

bbs系统项目中我们用到的ajax不多,但是在聊天室里用到的全是ajax,所以本项目的主要内容就是: 前端使用ajax传输json格式的数据是本节的重点以及 前端函数的的使用. http协议的特点是:短链接 ,服务器无法主动向客户端发送消息.都是客户端请求服务器返回消息. 那么问题来了,WEB聊…

Web聊天室项目

Web聊天室 项目描述所用技术业务分析接口设计和整体业务流程相关代码程序演示 项目描述 实现一个类似于在线QQ聊天的功能&#xff0c;不同的用户可以在相同的频道里发送和接受消息从而达到在线聊天的功能。 项目的主要功能有&#xff1a;注册用户、用户登陆、频道主页、进入频…

Web聊天室

目录 一&#xff0c;简介 二&#xff0c;开发环境 三&#xff0c;涉及的技术 四&#xff0c;主要功能 1.注册功能 2.登录功能 3.异地登陆&#xff08;第一次登录网页会被强制退出&#xff09; 4.发送消息 5.接收消息 6.注销登录 五&#xff0c;准备工作 1.引入开发…

八个步骤实现一个Web项目(在线聊天室)

实现一个在线网页的聊天室 Hello&#xff0c;今天给大家带来的是我的一个Web项目的开发过程的相关步骤&#xff0c;这个项目实现的功能是一个Web在线聊天室&#xff0c;简单的来说就是实现在网页版的聊天框&#xff0c;能够实现对于用户信息进行注册&#xff0c;登录&#xff…

基于JavaWeb聊天室设计与实现

目 录 摘要 i Abstract ii 1 概述 1 1.1 聊天室系统的基本概念 1 1.2 开发聊天室系统的意义 1 1.3 目前的研究现状 1 1.4 总体设计的基本思路 1 2 主要技术 3 2.1 JSP技术 3 2.2 JavaBean技术 4 2.3 Servlet技术 4 2.4 MyEclipse开发工具 6 2.5 Access数据库技术 6 2.6 Tomcat…

【Hadoop篇】启动hdfs集群时,提示: ERROR: Cannot set priority of zkfc process 5668

【问题描述】 启动hdfs集群时&#xff0c;遇到如下错误 [dylanhadoop102 hadoop]$ start-dfs.sh Starting namenodes on [hadoop102] Starting datanodes Starting secondary namenodes [hadoop104] Starting ZK Failover Controllers on NN hosts [hadoop102] hadoop102: ERR…

hadoop(XShell) 出现错误ERROR: Cannot set priority of namenode process 7927

项目场景&#xff1a; 网页上出错&#xff1a;&#xff08;出现这种问题有时候也可能是没有关闭防火墙&#xff09;&#xff0c;也可能是一下这种错误。 XShell上出错&#xff1a; 问题描述 XShell提示该地方出错&#xff1a; 上面说了是mapred-site.sml文件出错了 原因分析…

Yarn启动报错,ERROR: Cannot set priority of registrydns process xxxxx

问题&#xff1a; HDP 安装 yarn 时。或者重启服务的时候&#xff0c;yarn registry dns 无法启动。如下图所示&#xff1a; 报错信息&#xff1a; 查看报错信息&#xff0c;报错信息如下所示&#xff1a; ERROR: Cannot set priority of registrydns process xxxxx解决方式…

启动Hadoop集群,出现Cannot set priority of nodemanager(resourcemanager) process xxx问题

背景 &#xff08;不感兴趣可以跳过背景介绍&#xff09; 配置 Ubantu20.04jdk1.8.0_221hadoop 3.3.1hive 3.1.3三台虚拟机搭建Hadoop集群在安装hive的过程中&#xff0c;初始化数据库成功后&#xff08;mysql&#xff09;&#xff0c;输入 命令: ./bin/hive启动hive时出错&a…

【Hadoop】关于Hadoop集群HDFS启动问题:DataNode启动报错ERROR: Cannot set priority of namenode process

关于Hadoop集群HDFS启动问题&#xff1a;NameNode启动正常&#xff0c;DataNode启动报错ERROR: Cannot set priority of namenode process 19826 出了问题第一步一定要先看日志&#xff01;看日志&#xff01;看日志&#xff01; DataNode日志文件在Hadoop目录下的logs文件夹 …

Hadoop安装错误:Cannot set priority of secondarynamenode process : xxxxx

这是由于当前用户与可操作用户不匹配&#xff0c;产生权限冲突 使用以下命令可解决 chown -R root:root 文件名/&#xff0c;如 chown -R root:root hadoop3.1.3/ 成果&#xff1a;

Cannot set priority of datanode proces

hadoop03: ERROR: Cannot set priority of datanode process 2518错误解决 修改hdfs-site.xml配置文件 我的配置是 <configuration> <property><name>dfs.replication</name><value>4</value><description>副本个数&#xff0c;默…

启动hadoop集群报错ERROR: Cannot set priority of namenode process 2570

在格式化集群正常的情况下启动hadoop集群&#xff0c;但是却启动不起来&#xff0c;jps查看进程也是没有进程的&#xff1a; 查看log定位问题&#xff1a; [roothadoop320_01 logs]# cat hadoop-root-namenode-hadoop320_01.log因为主机名中包含了下划线&#xff0c;所以报错。…

JAVA-线程优先级setPriority

JAVA-线程优先级setPriority 1. 说明 线程分为1-10级&#xff0c;10级最高&#xff0c;优先级的高低不代表线程优先执行&#xff0c;需要看CPU的情况&#xff0c;一般情况下优先级高的先执行&#xff0c;程序先执行主方法&#xff0c;在执行线程。 2. 代码实现 public class …

hadoop入门1:ERROR Cannot set priority of datanode process

问题现象&#xff1a; 部署hadoop-3.1.2&#xff0c;启动hdfs时出现如下错误&#xff1a; Starting datanodes zglinux: ERROR: Cannot set priority of datanode process 2905解决方案&#xff1a; 此问题困扰了很久&#xff0c;百度上也搜不到&#xff0c;且是我已经在公司…

hadoop报错ERROR: Cannot set priority of namenode process

现象&#xff1a; 解决&#xff1a; 1.看Hadoop的日志&#xff1a; 查看namenode日志&#xff1a;tail -n 200 hadoop-xinjie-namenode-VM-0-9-centos.log &#xff08;文件目录所在位置&#xff1a;hadoop安装位置logs文件&#xff09; 2.发现是端口占用 3.命令查看端口占用…

Cannot set priority of nodemanager process xxx问题

Cannot set priority of nodemanager process xxx问题 一、问题描述 这个问题是我在配置hadoop集群时遇到的问题&#xff0c;启动resourcemanager和nodemanager时总会出现&#xff0c;但是奇怪的是只会在第二台机器出现这个问题&#xff0c;当把resourcemanager配置到其他机器时…