美文网首页
localStorage简单理解

localStorage简单理解

作者: 青辰m | 来源:发表于2020-03-20 19:21 被阅读0次

聊天软件后端设计文档

表的设计

  • 用户表(user)
Name DataType 描述
id INT(11) 主键
email chat(20) Not null
username char(20) Not null
password char(20) Not null
headerimg varchar(255) 设置默认值
socketid varchar(255) 允许为空
isonline int(1) 0 or 1
chattime BIGINT(255) 允许为空

  • 好友表(friends)
Name DataType 描述
userid INT(11)
friendid INT(11)
state char(20) 删除 or 未通过 or 是好友
addtime BIGINT(255) 成为好友时间

  • 房间表(room)
Name DataType 描述
id INT(11) 主键
roomname char(20) not null
roomimg char(20) 设置默认

  • 用户与房间的关系表(user_room)
Name DataType 描述
userid INT(11) 外键 与user表中的id
roomid INT(11) 外键 与room表中的id
readtime BIGINT(255) 接收房间信息时间
state char(20) 退群 or 待通过 or 加入群
addtime BIGINT(255) 加群时间

  • 用户聊天表(userchat)
Name DataType 描述
sendid INT(11)
sendimg varchar(255)
toid INT(11)
toimg varchar(255)
content varchar(255)
chattime BIGINT(255)
readtime BIGINT(255)

  • 房间聊天表(roomchat)
Name DataType 描述
sendid INT(11)
sendimg varchar(255)
toroomid INT(11)
toroomimg varchar(255)
content varchar(255)
chattime BIGINT(255)

功能

1.登录

socket.on('login',async function(data){
    //data: 两个字段(email,password)
}
  • 根据email查找用户,验证密码

    • 若返回0条数据
        socket.emit('login_error',{content:'密码或账户错误'})
    
    • 若返回的一条数据:

      • isonline == true 对当前登录状态的用户执行
      socket.to(result1[0].socketid).emit('logout',{
          content:'有人登录进来了,你被强制踢出去了!'
          })
      
      • 更新数据库信息
          isonline = true
          socketid = socket.id
          //返回登录成功
          socket.emit('login',{
              data:result1,
              state:'ok',
              content :'登陆成功'
          })
      
      • 获取最新未接收到的个人消息
          socket.emit('unreadMsg',查询的结果)
      
      • 获取最新未接收的群消息
      socket.emit('unreadroomMsg',查询的结果)
      

2.注册

3.获取用户列表

socket.on('user',function(data){
    //返回用户列表
    socket.emit('user',查询的结果)
})

获取群列表

socket.on('room',function(data){
    //返回房间列表
    socket.emit('room',查询的结果)
})

断开事件

socket.on('disconnect',function(){
    修改数据库socketid   isonline
})

发送个人信息

socket.on('senduserMsg',function(data){
})
  • 判断toid 是否在线
    • isonline -- true
      直接发送消息
    • 保存消息到userchat表中

发送群消息

  • 根据toroomid 查找userid
    • isonline -- true
      直接发送消息
    • 保存消息到roomchat表中

看个人消息后,修改消息状态

socket.on('readMsg',data()=>{

})

看完群消息,修改readtime

socket.on('readRoomMsg',data(){

})

相关文章

网友评论

      本文标题:localStorage简单理解

      本文链接:https://www.haomeiwen.com/subject/senmkhtx.html