<h1 align="center">HasChat</h1>
<h5 align="center">基于vue3+socket.io的聊天应用</h5>
<div align="center">
[![star](https://gitee.com/howcode/has-chat/badge/star.svg)](https://gitee.com/howcode/has-chat) [![fork](https://gitee.com/howcode/has-chat/badge/fork.svg)](https://gitee.com/howcode/has-chat) [![](https://img.shields.io/badge/QQ群-149091283-red)](https://jq.qq.com/?_wv=1027&k=XivFMfBQ)
```shell
无偿开源!你们的Star是我的动力!
```
------------------------------------------------------------------------
</div>
# 介绍
自我做的客服聊天以来,让我做一套聊天应用的呼声越来越多,加上那套客服聊天由于没有组件化、UI设计等问题,也让我一直心有遗憾做的不够完美,于是利用空余时间做了一套相对完整的聊天应用。HasChat 是一套使用全新技术完成的通讯聊天网页。
- 前端:Vue3 + Vite + TypeScript + Naive UI + Socket.io
- 后端:Express.js [后端地址](https://gitee.com/howcode/has-chat-service)
作者开源目的旨在给刚学习该领域的新人一些引路,不管你是前端还是后端,都能对你在通讯聊天这个领域有一点点的启发。
# 预览图
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef64ea7a09484131b1570e3c3c086fbd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG93Y29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/f74d114a4b21465b9a02997aacce1edc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG93Y29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
# 在线预览
[haschat聊天应用](http://howcode.online/)
# 功能一览
- 登陆、随机获取用户登陆
- 发送邮箱验证码注册
- 发送表情+文字组合的富文本内容
- 发送图片内容,查看大图
- enter发送信息,enter+ctrl换行输入内容
- 消息提醒
- 未读消息标记
- 记录历史会话
- 记录历史聊天内容
- 切换主题
# 版本说明
- 前端:暂无版本区别
- 后端:分为mysql版本(分支main)和json版本(分支master);json版本主要是为了不懂mysql的新手学习;
# 环境部署
```javascript
Node.Js >= 12.0.0
Mysql >= 5.7.0 (仅mysql版本需要,但执行mysql文件需要8.0以上版本)
```
## 下载项目
前端
```javascript
https://gitee.com/howcode/has-chat.git
```
后端 mysql版本
```javascript
git clone -b main https://gitee.com/howcode/has-chat-service.git
```
后端 json版本
```javascript
git clone -b master https://gitee.com/howcode/has-chat-service.git
```
## 启动项目
### 安装依赖
前、后端
```javascript
npm install
```
### mysql配置(json版本跳过)
- 在mysql的版本中,找到目录store下的sql文件,运行sql文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/4cbe505a6cd344c5933359c36192c223.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG93Y29kZXI=,size_14,color_FFFFFF,t_70,g_se,x_16)![在这里插入图片描述](https://img-blog.csdnimg.cn/253ce4de33f84648a6d769041d8227d1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG93Y29kZXI=,size_17,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c794583d2e7f41fc90447c57b0234057.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG93Y29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b02d0124c0624466982203208ddbaa03.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG93Y29kZXI=,size_17,color_FFFFFF,t_70,g_se,x_16)
- 依次运行两个sql文件,并且刷新数据库表就可看到了
![在这里插入图片描述](https://img-blog.csdnimg.cn/5d325c9a9b1b424ba8d57a04a3f8edc1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaG93Y29kZXI=,size_17,color_FFFFFF,t_70,g_se,x_16)
- 找到config.js文件
```javascript
const db = mysql.createConnection({
host: "", // 主机地址 (默认:localhost)
user: "", // 用户名
password: "", // 密码
database: "" // 数据库
})
```
更多配置查看:[nodejs-mysql](https://www.runoob.com/nodejs/nodejs-mysql.html)
### 邮箱配置(json版本跳过)
- 找到config.js文件
```javascript
emailConfig: { //邮箱配置
host: "smtp.qq.com",//邮箱服务器 这里我用的QQ邮箱
port: 465,//邮箱使用端口
secure: true,//是否使用默认的465端口
auth: {
user: "", // 发送方邮箱地址
pass: "" // smtp 验证码
}
}
```
详情使用可以查看该文章:[nodejs发送邮箱信息](https://www.cnblogs.com/kusaki/p/11801769.html)
### 启动项目/服务
- 后端
```javascript
node app.js
```
- 前端
```javascript
npm run dev
```
*到此,项目可以正常运行*
# 项目目录
```javascript
haschat
├── src
│ └── api // 接口文件
│ └── assets // 资源文件
│ └── css // css样式
│ └── emo // 表情包
│ └── icon // 字体图标
│ └── img // 图片资源
│ └── mp3 // 消息提示音频
│ └── class // 类文件
│ └── components // 组件
│ └── ChatContent.vue // 聊天窗口
│ └── ChatDomain.vue // 功能组件
│ └── ChatEditor.vue // 聊天输入框
│ └── ChatFoot.vue // 聊天框底部
│ └── ChatHead.vue // 聊天头部
│ └── ChatNav.vue // 菜单栏
│ └── HasChat.vue // 聊天入口
│ └── enums // 通用枚举
│ └── json // JSON数据处理
│ └── router // 路由
│ └── store // 数据仓库
│ └── utils // 工具
│ └── views // 页面
```
# 类文件
## User
| 字段 | 类型 | 描述 |
| ------------------ | --------- | ---------------- |
| Id | number | 用户Id |
| Name | string | 用户姓名 |
| NickName | string | 用户昵称 |
| OnlineState | boolean | 在线状态 |
| Mobile | string | 用户手机号 |
| Avatar | string | 用户头像 |
## Conversition
| 字段 | 类型 | 描述 |
| ------------------ | --------- | ---------------- |
| Id | number | 内容Id |
| SendId | number | 发送人Id |
| ReciverId | number | 接受人Id |
| Content | string | 内容 |
| Type | number | 类型 |
| State | number | 发送状态 |
| NoCode | string | 信息编号 |
| CreateDateUtc | string | 创建时间 |
| Title | string | 拓展功能字段 |
| Description | string | 拓展功能字段 |
| Label | string | 拓展功能字段 |
| Thumbnail | string | 拓展功能字段 |
| ReadFlag | boolean | 是否阅读 |
| Avatar | string | 发送者用户头像 |
# 请求api
## 1.获取用户信息
**参数**
`id`:用户Id,必传
**接口地址** : /api/getUserById
## 2.获取用户列表
**参数**
`id`:除去的用户Id,必传
**接口地址** : /api/userList
## 3.随机获取一条用户数据
**参数**
无
**接口地址** : /api/getRandomUser
## 4.登陆
**参数**
`email`:账户,必传
`password`:密码,必�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
前端:Vue3 + Vite + TypeScript + Naive UI + Socket.io 后端:Express.js 功能一览 登陆、随机获取用户登陆 发送邮箱验证码注册 发送表情+文字组合的富文本内容 发送图片内容,查看大图 enter 发送信息,enter+ctrl 换行输入内容 消息提醒 未读消息标记 记录历史会话 记录历史聊天内容 切换主题 发送视频 发送语音(仅移动端具备)
资源推荐
资源详情
资源评论
收起资源包目录
has-chat.zip (99个子文件)
has-chat
has-chat-service-main
store
mysql8
history_session.sql 2KB
user.sql 13KB
community_comment.sql 2KB
community_like_record.sql 1KB
content.sql 2KB
community.sql 2KB
.keep 0B
mysql57
history_session.sql 2KB
user.sql 13KB
community_comment.sql 2KB
community_like_record.sql 1KB
content.sql 2KB
community.sql 2KB
.keep 0B
导入数据库前请看我.md 331B
app.js 22KB
package.json 418B
package-lock.json 36KB
config.js 1KB
.gitignore 238B
query
user.js 5KB
community.js 7KB
content.js 2KB
historySession.js 2KB
README.md 6KB
has-chat-master
yarn.lock 75KB
.vscode
extensions.json 49B
.env.production 127B
src
class
User.ts 429B
Conversition.ts 1KB
main.ts 812B
App.vue 2KB
store
index.js 4KB
assets
style
theme.less 4KB
variables.less 1KB
img
funny.jpg 30KB
css
common.less 550B
mp3
msgTip.mp3 17KB
icon
iconfont.css 897B
api
user.js 1KB
utils
request.js 1KB
components
ChatDomain.vue 5KB
HasChat.vue 4KB
ChatFoot.vue 5KB
ChatNav.vue 3KB
MainFooter.vue 1KB
ChatEditor.vue 5KB
ChatHead.vue 430B
ChatContent.vue 10KB
enums
index.ts 201B
env.d.ts 276B
router
index.js 369B
json
expressions.json 2KB
views
HasChat
HasChat.vue 2KB
Home
Home.vue 12KB
LICENSE 11KB
.env.development 118B
package.json 743B
public
emo
眨眼.png 12KB
奸笑.png 11KB
静音.png 10KB
迷茫.png 11KB
生气.png 12KB
开心.png 11KB
天使.png 14KB
疲惫.png 11KB
魔鬼.png 14KB
难过.png 11KB
吐舌.png 12KB
斜眼.png 11KB
睡觉.png 12KB
热恋.png 15KB
思考.png 14KB
眼红.png 12KB
生病.png 13KB
闭嘴.png 11KB
头晕.png 14KB
呕吐.png 12KB
哭.png 12KB
亲吻.png 12KB
中毒.png 11KB
震惊.png 13KB
酷.png 14KB
流汗.png 12KB
受伤.png 13KB
笑哭.png 14KB
懵B.png 13KB
面无表情.png 9KB
口罩.png 12KB
害怕.png 14KB
尬笑.png 13KB
logo.png 15KB
favicon.ico 66KB
package-lock.json 81KB
vite.config.ts 779B
index.html 318B
.gitignore 45B
tsconfig.json 556B
README.md 10KB
共 99 条
- 1
资源评论
云哲-吉吉2021
- 粉丝: 3983
- 资源: 1128
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot和Vue的后台管理系统.zip
- 用于将 Power BI 嵌入到您的应用中的 JavaScript 库 查看文档网站和 Wiki 了解更多信息 .zip
- (源码)基于Arduino、Python和Web技术的太阳能监控数据管理系统.zip
- (源码)基于Arduino的CAN总线传感器与执行器通信系统.zip
- (源码)基于C++的智能电力系统通信协议实现.zip
- 用于 Java 的 JSON-RPC.zip
- 用 JavaScript 重新实现计算机科学.zip
- (源码)基于PythonOpenCVYOLOv5DeepSort的猕猴桃自动计数系统.zip
- 用 JavaScript 编写的贪吃蛇游戏 .zip
- (源码)基于ASP.NET Core的美术课程管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功