- 需求说明
- 安装教程
- 相关接口
- 数据库设计
- 技术栈
- 运行效果
提高人与人之间交流,节约客户人力成本。
- 用户登录
- 用户注册
- 文件上件
- 密码修改
- 群聊
- AI 智能聊
- 发送消息
- 获取联系人历史消息
要运行智能聊天系统,你需要Node.js(V10 LTS版本,例如10.6.3)
开发环境和MySql
数据库
推荐在 Linux 和 MacOS 系统中运行,Windows 系统也兼容的,但是遇到意外问题会多一些
- 客户端访问
- 服务器运行步骤
- nginx 反向代理配置
客户端运行说明
访问地址:http://chat.xiaowuzi.info
请使用 IE8 以上浏览访问或手机访问
服务器运行步骤
进行项目——>运行npm install
——>启动后端服务npm run server
——>启动前端
nginx 反向代理配置
server {
listen 80;
# 修改为你的域名
server_name chat.xiaowuzi.info;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
# 路径重写
rewrite /api/(.*) /$1 break;
proxy_pass http://localhost:9090;
}
}
配置 HTTPS+HTTP2.0
server {
listen 80;
# 修改为你的域名
server_name chat.xiaowuzi.info;
return 301 https://chat.xiaowuzi.info$request_uri;
}
server {
listen 443 ssl http2;
# 修改为你的域名
server_name chat.xiaowuzi.info;
ssl on;
# 修改为你的ssl证书位置
ssl_certificate ./ssl/chat.xiaowuzi.info.crt;
ssl_certificate_key ./ssl/chat.xiaowuzi.info.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
root /data/www/chat;
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
# 路径重写
rewrite /api/(.*) /$1 break;
proxy_pass http://localhost:9090;
}
}
- 服务配置
config/server.js
- 客户端配置
config/client.js
- 客户端构建配置
webpack.js
- 请求地址:
/api/reg
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
nick |
是 |
tony |
登录名 |
password |
是 |
123456 |
登录密码 |
email |
是 |
[email protected] |
邮箱 |
name |
是 |
小武子 |
真实姓名 |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/login
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
username |
是 |
fftony |
登录名 |
password |
是 |
123456 |
密码 |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/add-friend
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
userId |
是 |
20191117 |
用户 id |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/del-friend
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
userId |
是 |
20191117 |
用户 id |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/update-password
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
userId |
是 |
20191117 |
用户 id |
oldPassword |
是 |
123456 |
旧密码 |
newPassword |
是 |
123456 |
新密码 |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/change-username
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
username |
是 |
tony |
用户名 |
userId |
是 |
20191117 |
用户 id |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/get-user-list
- 请求类型:
GET
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
page |
是 |
1 |
当前页 |
size |
是 |
10 |
页大小 |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/send-msg
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
userId |
是 |
20191117 |
发送人 id |
msg |
是 |
'你大爷' |
消息内容 |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/msg-history
- 请求类型:
GET
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
linkmanId |
是 |
20191117 |
联系人 id |
existCount |
是 |
13 |
已有消息数量 |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
- 请求地址:
/api/chatting-ai
- 请求类型:
POST
- 请求参数
参数名称 |
是否必须 |
示例 |
备注 |
userid |
是 |
你大爷 |
20191117 |
msg |
是 |
消息内容 |
做的很好呀 |
名称 |
类型 |
是否必须 |
默认值 |
备注 |
code |
number |
必须 |
0 |
0 表示成功,其它值为出错 |
data |
object |
必须 |
{id:20191116} |
略 |
msg |
string |
必须 |
|
略 |
创建语句
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`nick` varchar(255) DEFAULT NULL,
`detail_info` json DEFAULT NULL,
`create_time` varchar(20) DEFAULT NULL,
`modified_time` varchar(20) DEFAULT NULL,
`level` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- Vue 2.6:前端页面展示
- Socket.io:实现实时通信
- Vuex:Vuex,实现不同组件间的状态共享
- Vue-router:页面路由切换
- axios:一个基于
Promise
的 HTTP 库,向后端发起请求。
- Koa2:一个
node.js
web 应用框架
- Monment.js:一个时间处理的库,方便对时间进行格式化成需要的格式。
- ES6、ES7:采用 ES6 语法,箭头函数、
Promise
等等语法很好用。
- MySql:开源数据库
- Webpack:前端打包工具。
- SASS(SCSS):用 SCSS 做 CSS 预处理语言,有些地方很方便。
- flex:flex 弹性布局,简单适配手机、PC 端。
- CSS3:CSS3 过渡动画及样式。


