徜徉在知识海洋的一群鲸鱼
实时聊天思路
实时聊天思路

实时聊天思路

mern项目

不同点:用到了mongoose.Schema实例的pre方法用于在文档保存之前(save)执行自定义操作。直接在模型中对密码加盐,相比之前的处理是在请求中加的盐

在controllers中处理功能逻辑,相比于之前直接在请求中处理逻辑

添加了express-async-handler自动捕获异常并传递给错误处理中间件,之前的用的是trycatch

后端

config中配置数据库,生成30天的token

models中定义聊天,消息,用户模型

controllers处理功能逻辑,

聊天处理:

进入聊天,判断两个人是否有聊天记录,有的话把最新的记录返回,否则创建新的记录

查询聊天,查询数据库中的聊天记录,返回聊天记录列表

创建组聊天,创建群组聊天,返回消息记录,

重命名组,更新组名

添加到聊天组,更新组内用户成员

从组中删除,删除组内用户,

信息处理

获取所有信息,发送信息,

用户处理

获取所有用户,注册用户,用户授权

使用mongoose,find中使用$and处理并条件,populate填充相关表的字段,并通过-排除不需要的字段,create创建,findOne单一查找,findByIdAndUpdate更新

middleware中间件处理token和错误捕获

routes中处理请求

server注册socketio,设置超时60s,监听消息,

部署改动:

导入用户,聊天,信息路由,导入中间件处理权限和错误信息,use添加接口,添加socket监听,安装socket,express-async-handler

重构数据库模型,重写todos前端接口

接口管理:chat的接口

user访问/user,默认的get获取所有用户,默认的post注册用户。login登录

chat访问/chat,默认的post单人聊天,get获取所有聊天,group创建组,rename重命名,groupremove删除,groupadd添加组

message访问message,携带聊天id的get获取所有信息,默认post发送信息

todo的接口

todos,get获取当前用户todos,post新建,put修改内容,patch修改状态,delete删除

signup,post注册

signin,post登录

思路:chat的登录注册替换tode的登录注册,todo的actions中修改接口的调用,

login1 signup1 组聊天2,sidedraw2,更新组3,我的聊天1,single2,但是有个socket

注册之后不跳转到组件,刷新之后才行,然后阿里云的服务器要配置websocket还需要买,就没有部署到服务器上