QQ聊天群

基于WebSocket方案实现QQ群聊天功能

场景:

 

 

主要业务:

用户上线,用户下线,发送消息三种不同的业务事件

用户表: 用户id( uid)、 用户名(username)、 昵称(nickname)、 密码(password)、登出时间 (logout_at)

消息表:消息id(mid) 、用户id(uid)、 发送内容(content)、发送时间(published_at)

1.处理用户上线逻辑

1)判断上线的是那个用户

2)将用户信息记录到在线用户列表中(如果多处登录,将之前登录的踢下线)

3)查找历史消息并发送

2.处理用户下线逻辑

1)记录用户下线时间

2)从在线用户列表中,删除该用户

3.处理发来消息的逻辑

1)记录消息(谁发的什么消息)

2)把消息转发给所有在线用户

4.群成员状态更新:轮询模式

MVC分层

endpoint 层 负责WebSocket的接入入口

service 层 负责业务工作

dao 层 负责数据库的处理

usercenter层 管理在线用户

聊天功能的测试用例:

 

 BUG:

  1. 所有群成员的头像都一致
  2. 自己发送的消息和其他成员发送的消息在同一侧(左侧)
  3. 登录/注册时不填写用户名、密码也可以成功
  4. 密码可以进行暴力破解
  5. 登录/注册后,不能直接跳转到聊天首页,需要再次输入首页的url,比较麻烦
  6. 以一秒一次的频率刷新用户在线状态,可能还不够及时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值