当前位置: 首页 > news >正文

【简易聊天室】使用 HTML、CSS、JavaScript 结合 WebSocket 技术实现

本人能力有限,如有错误之处,还望指正

要制作一个简易聊天室,我们可以使用 HTML、CSS、JavaScript 结合 WebSocket 技术实现。
以下是一个完整的实现方案,包含前端界面和后端服务:

源代码:https://pan.quark.cn/s/e7d47e664d46
百度网盘下载:聊天室
链接:https://pan.baidu.com/s/1ma4D42PJk01dtCFyuh5_3w?pwd=ichd 提取码:ichd

1. 前端实现(HTML + CSS + JavaScript)

创建 index.html 文件,实现聊天界面和客户端逻辑:


<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>简易聊天室</title><style>body {font-family: Arial, sans-serif;max-width: 800px;margin: 0 auto;padding: 20px;}.chat-title {text-align: center;color: #333;margin-bottom: 20px;}#chat-container {border: 1px solid #ccc;border-radius: 5px;padding: 10px;height: 500px;display: flex;flex-direction: column;}#messages {flex: 1;overflow-y: auto;margin-bottom: 10px;padding: 10px;border: 1px solid #eee;border-radius: 4px;}.message {margin: 5px 0;padding: 8px;border-radius: 4px;}.other {background-color: #f0f0f0;}.self {background-color: #e1f5fe;text-align: right;}#input-area {display: flex;gap: 10px;}#username {width: 120px;padding: 8px;border: 1px solid #ccc;border-radius: 4px;}#message-input {flex: 1;padding: 8px;border: 1px solid #ccc;border-radius: 4px;}#send-btn {padding: 8px 16px;background-color: #4CAF50;color: white;border: none;border-radius: 4px;cursor: pointer;}#send-btn:hover {background-color: #45a049;}</style>
</head>
<body><h1 class="chat-title">简易聊天室</h1> <!-- 标题 --><div id="chat-container"><div id="messages"></div><div id="input-area"><input type="text" id="username" placeholder="你的名字"><input type="text" id="message-input" placeholder="输入消息..."><button id="send-btn">发送</button></div></div><script>// 连接WebSocket服务器(根据后端地址修改)const ws = new WebSocket('ws://localhost:8080');const messagesDiv = document.getElementById('messages');const usernameInput = document.getElementById('username');const messageInput = document.getElementById('message-input');const sendBtn = document.getElementById('send-btn');// 接收消息ws.onmessage = (event) => {const data = JSON.parse(event.data);const messageDiv = document.createElement('div');messageDiv.className = `message ${data.isSelf ? 'self' : 'other'}`;messageDiv.innerHTML = `<strong>${data.username}</strong>: ${data.content}`;messagesDiv.appendChild(messageDiv);// 滚动到底部messagesDiv.scrollTop = messagesDiv.scrollHeight;};// 发送消息function sendMessage() {const username = usernameInput.value.trim() || '匿名用户';const content = messageInput.value.trim();if (content) {ws.send(JSON.stringify({ username, content }));messageInput.value = '';}}// 绑定事件sendBtn.addEventListener('click', sendMessage);messageInput.addEventListener('keypress', (e) => {if (e.key === 'Enter') sendMessage();});// 连接状态提示ws.onopen = () => {console.log('连接成功');};ws.onclose = () => {console.log('连接关闭');alert('与服务器断开连接,请刷新页面重试');};ws.onerror = (error) => {console.error('连接错误:', error);};</script>
</body>
</html>

2. 后端实现(Node.js + WebSocket)

安装nodejs可以参考这篇文章:
https://blog.csdn.net/weixin_53197693/article/details/151796516?spm=1001.2014.3001.5501

创建服务器文件 server.js
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });// 存储所有连接的客户端
const clients = new Set();wss.on('connection', (ws) => {console.log('新客户端连接');clients.add(ws);// 接收客户端消息并转发给所有连接的客户端ws.on('message', (data) => {const message = JSON.parse(data.toString());// 向每个客户端发送消息(标记是否为自己发送)clients.forEach((client) => {if (client.readyState === WebSocket.OPEN) {client.send(JSON.stringify({...message,isSelf: client === ws  // 标记是否为当前发送者}));}});});// 客户端断开连接时移除ws.on('close', () => {console.log('客户端断开连接');clients.delete(ws);});// 错误处理ws.on('error', (error) => {console.error('WebSocket错误:', error);});
});console.log('WebSocket服务器运行在 ws://localhost:8080');

3. 运行聊天室

3.1把之前我分享的文件夹下载下来,或者自己新建文件,把文章中的代码copy过去。

在这里插入图片描述

3.2点击这里,输入cmd:

–>1
在这里插入图片描述
–>2
在这里插入图片描述
使用 Node.js 的 ws 库搭建 WebSocket 服务器,实现消息转发功能:

3.3 初始化+依赖安装

注意下路径中不要有中文,要不然npm init -y会报错。

npm init -y

在这里插入图片描述

npm install ws

在这里插入图片描述

3.4 启动服务器
  1. 启动后端服务器:

    node server.js
    

    在这里插入图片描述

  2. 打开 index.html 文件(可在多个浏览器窗口/标签页中打开,模拟多用户聊天)

  3. 在这里插入图片描述

  4. 输入用户名和消息,点击发送即可进行实时聊天
    在这里插入图片描述

4. 功能说明

  • 支持多用户实时聊天
  • 区分自己和他人的消息(不同背景色)
  • 自动滚动到最新消息
  • 支持按 Enter 键发送消息
  • 未输入用户名时默认显示"匿名用户"

5. 关闭聊天

在键盘中数据Ctrl+C即可关闭,就是平时用的复制快捷键。
在这里插入图片描述

在这里插入图片描述

注意事项

内容仅供参考,本人能力有限,所提供信息可能不完全准确或适用所有情况。

在这里插入图片描述

http://www.dtcms.com/a/573515.html

相关文章:

  • 外设模块学习(14)——雨滴传感器、土壤湿度传感器(STM32实现)
  • 小白银行测试初步了解(一)
  • 第14讲:HTTP网络请求 - Dio库的使用与封装
  • 西安市城乡建设管理局网站唐山专业网站建设公司
  • Flink集群部署以及作业提交模式详解
  • Windows系统Git的安装及在IDEA中的配置
  • Linux网络(二)——socket编程
  • 图书出版的幕后故事-《JMeter核心技术、性能测试与性能分析》背后不为人知的事
  • 最好的做网站公司有哪些河北网站推广优化
  • Voronoi 图及其在路径搜索中的应用
  • 网站模版自适应建设商务网站ppt
  • 舞台灯光透镜厂数字化:AI赋能光学检测与镀膜调控新范式
  • 买国外空间哪个网站好中国正式宣布出兵
  • 建设网站需要注册证书吗建站排行榜
  • AWS区域显示工具:统一化设计与实现
  • Valgrind 在嵌入式 Linux 平台:工作原理、典型场景与案例分析
  • 仙桃网站设计游戏优化是什么意思
  • journalctl 日志清理
  • 【javaFX基础】示例“无标题“控制器类的骨架、public class PleaseProvideControllerClassName {}问题处理
  • 计算文章的相似度
  • 网络通信的奥秘:HTTP详解 (六)
  • 郴州网站建设设计网站开发工程师职位概要
  • 夸克网盘下载速度几十KB怎么解决?- 在线免费工具
  • 如何搭建自己的交易系统
  • 分苹果问题
  • 2025年人工智能领域五大认证体系全景解析与选择策略
  • 人工智能导论(期末复习)
  • 怎么用软件做原创视频网站dw个人网站设计模板
  • Linux 安装 Elasticsearch:避坑指南 + 性能调优实战
  • 测开学习DAY23