Skip to content

ftTony/webchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jul 10, 2020
068f4ad · Jul 10, 2020

History

96 Commits
Jul 10, 2020
Aug 26, 2019
Aug 23, 2019
Mar 2, 2018
Feb 19, 2019
Nov 16, 2019
Mar 2, 2018
Dec 6, 2019
Aug 23, 2019
Nov 12, 2019
Apr 1, 2019
Mar 2, 2018
Mar 2, 2018
Jan 1, 2019
Mar 2, 2018
Nov 29, 2019
Jul 10, 2020
Jul 10, 2020
Nov 29, 2019

Repository files navigation

智能聊天系统

目录

  • 需求说明
  • 安装教程
  • 相关接口
  • 数据库设计
  • 技术栈
  • 运行效果

一、需求说明

1.1 需求背景

提高人与人之间交流,节约客户人力成本。

1.2 需求内容

  • 用户登录
  • 用户注册
  • 文件上件
  • 密码修改
  • 群聊
  • AI 智能聊
  • 发送消息
  • 获取联系人历史消息

二、安装教程

  • 环境准备
  • 如何运行
  • 项目配置

2.1 环境准备

要运行智能聊天系统,你需要Node.js(V10 LTS版本,例如10.6.3)开发环境和MySql数据库

  • 安装 Node.js
  • 安装 MySql

推荐在 Linux 和 MacOS 系统中运行,Windows 系统也兼容的,但是遇到意外问题会多一些

2.2 如何运行

  • 客户端访问
  • 服务器运行步骤
  • 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;
   }
}

2.3 项目配置

  • 服务配置 config/server.js
  • 客户端配置 config/client.js
  • 客户端构建配置 webpack.js

三、相关接口

3.1 注册

  • 请求地址:/api/reg
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
nick tony 登录名
password 123456 登录密码
email [email protected] 邮箱
name 小武子 真实姓名
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.2 登录

  • 请求地址:/api/login
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
username fftony 登录名
password 123456 密码
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {}
msg string 必须

3.3 添加好友

  • 请求地址:/api/add-friend
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
userId 20191117 用户 id
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.4 删除好友

  • 请求地址:/api/del-friend
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
userId 20191117 用户 id
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.5 修改密码

  • 请求地址:/api/update-password
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
userId 20191117 用户 id
oldPassword 123456 旧密码
newPassword 123456 新密码
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.6 修改用户名

  • 请求地址:/api/change-username
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
username tony 用户名
userId 20191117 用户 id
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.7 摘取用户列表

  • 请求地址:/api/get-user-list
  • 请求类型:GET
  • 请求参数
参数名称 是否必须 示例 备注
page 1 当前页
size 10 页大小
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.8 发送消息

  • 请求地址:/api/send-msg
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
userId 20191117 发送人 id
msg '你大爷' 消息内容
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.9 获取联系人历史消息

  • 请求地址:/api/msg-history
  • 请求类型:GET
  • 请求参数
参数名称 是否必须 示例 备注
linkmanId 20191117 联系人 id
existCount 13 已有消息数量
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

3.10 智能接口(调用图灵机器人)

  • 请求地址:/api/chatting-ai
  • 请求类型:POST
  • 请求参数
参数名称 是否必须 示例 备注
userid 你大爷 20191117
msg 消息内容 做的很好呀
  • 返回数据
名称 类型 是否必须 默认值 备注
code number 必须 0 0 表示成功,其它值为出错
data object 必须 {id:20191116}
msg string 必须

四、数据库设计

4.1 用户表

创建语句

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.jsweb 应用框架
  • Monment.js:一个时间处理的库,方便对时间进行格式化成需要的格式。
  • ES6、ES7:采用 ES6 语法,箭头函数、Promise等等语法很好用。
  • MySql:开源数据库
  • Webpack:前端打包工具。
  • SASS(SCSS):用 SCSS 做 CSS 预处理语言,有些地方很方便。
  • flex:flex 弹性布局,简单适配手机、PC 端。
  • CSS3:CSS3 过渡动画及样式。

六、运行效果

6.1 登录页面

images

6.2 群聊页面

images

6.3 智能聊天页面

images

联系我

参考资料

About

nodejs聊天系统(koa+mysql开发智能聊天系统)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published