# WebMessage
# 介绍
本项目为 **基于 Node.js 的在线聊天室**,实现较易,适合初学者练手
此项目是基于 [https://gitee.com/hebugui/web_qqchating](https://gitee.com/hebugui/web_qqchating) 优化完善的开源项目,增添了新的业务功能,优化了代码逻辑与页面样式。
# 采用技术
**HTML + CSS + JS + Node.js + Mysql + JQuery**
* Node.js 库包括 `express / http / socket.io / mysql / path / china-time`
* JQuery 库包括 `jquery-emoji / jquery-mCustomScrollbar`
# 项目结构

由上至下,各文件分别为
`database` 中 `config.js` 为数据库配置文件,`dbprocess.js` 封装了对数据库的操作(增删改查);
`node_modules` 为 Node.js 库包;
`public` 文件夹包含前端静态文件,`homePage.css` 负责登录注册界面,`style.css` 负责聊天界面,`main.js` 负责业务逻辑核心功能的实现(用户登录、注册、显示聊天消息、发送表情及图片),`index.html` 负责前端呈现;
`lib` 文件夹包含了使用到的 jQuery 库包;
`app.js` 为项目入口及 **程序启动文件**,负责与数据库的交互;
# 数据库
数据库包含两张表,`message`(聊天记录表)、`userInformation`(用户表,注意 `I` 在这里是大写),字段设置分别如下:


# 使用
## 本地测试:
* **方法1:** 在命令行窗口 cd 进入项目根目录,输入 `node app.js` 后回车执行 app.js 文件
* **方法2:** 在项目根目录下 ` Git Bash Here` ,输入 `node app.js` 后回车执行
* 然后浏览器访问 `http://localhost:3000` 即可

## 在线部署:
1. 需要修改 `main.js` 文件中 `var socket = io('http://localhost:3000');` 语句,将 URL 更改为自己服务器的相应 IP + 端口;
1. 需要修改 `config.js` 文件中数据库的相关信息(database / user / password);
1. 如有必要(例如源码不包含 `node_modules` 文件夹、`public/lib` 文件夹),需要在项目根目录下重新安装相应的 Node.js 库包、在 public/lib 目录下导入 jQuery 库包;
# DEMO 展示
## 登录 & 注册




## 群聊



## 私聊


# 优化与改进
## 待实现
* [ ] 修改密码功能
* [ ] 用左侧用户栏提示相应未读消息取代目前使用公共聊天窗口提示的方案
* [ ] 上传与下载文档功能
## 待改进
* [ ] 用户数据加密传输与存储
* [ ] 防止 SQL 注入
* [ ] 聊天窗口 CSS 样式继续优化
* [ ] 修改默认加载历史记录的条数,避免每次都加载以往所有的消息记录
## 待修复
* [ ] 用户上传图片大小受限,上传较大的图片会导致用户被踢下线的恶性 Bug

matlab大师
- 粉丝: 2963
最新资源
- 【Go语言开发】从基础语法到实战应用:详解goroutine与channel的高效并发编程及应用场景了文档的主要内容
- Go语言基于泛型与模糊测试的高性能缓存库设计:LRU与LFU策略的通用Cache实现及优化
- 【Go语言开发】从并发模型到云原生实践:高并发系统设计与优化技巧详解
- Go语言Web开发全栈实践与微服务架构落地:从基础教程到RESTful API实战案例
- 三菱PLC伺服两轴送料机程序详解:含CAD图纸与运行视频 CAD图纸
- 通过目标检测+图片识别模型对图片中的垃圾进行分类、通过双向LSTM+一维卷积混合模型对物体名称进行垃圾分类
- 教育科技综合性在线学习与服务平台的需求分析与设计:涵盖题库、课堂、商城、积分、院校大数据、Banner管理、通知系统及内容审核功能(含详细代码及解释)
- 基于Windows的硬实时操作系统IntervalZero RTX的PCIE驱动开发:中断与线程切换延迟达ns级,通用开发平台VS,不局限于特定PCIe IP Windows 必备版
- google浏览器chromedriver驱动下载(chrome版本:139.0.7258.128)
- 基于KKT条件的双层电力市场竞标模型:GAMS代码实践与解读 · GAMS
- 无线通信智能反射面辅助的NOMA上行链路系统优化:组级SIC与联合设计提升能效及抗干扰性能(含详细代码及解释)
- 【连锁超市配送系统优化】基于AHP与遗传算法的盐山县B连锁超市配送模式与路径优化研究:提升配送效率和服务水平的综合解决方案(含详细代码及解释)
- 基于LQR最优控制算法的车辆轨迹跟踪控制研究:四自由度动力学模型的仿真与应用
- 生物医学氧化应激触发的Wnt信号扰动是肺腺向鳞状细胞转分化的临界点:基于KL小鼠模型的动态调控机制研究(含详细代码及解释)
- MATLAB实现分布式电源接入对配电网影响评估——基于牛顿拉夫逊法的潮流计算
- MATLAB多目标粒子群算法优化冷热电联供综合能源系统运行 v3.5
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


