聊天室
项目需求
账号管理
- 实现登录、注册、注销
- 实现找回密码(提高)
好友管理
- 实现好友的添加、删除、查询操作
- 实现显示好友在线状态
- 禁止不存在好友关系的用户间的私聊
- 实现屏蔽好友消息
- 实现好友间聊天
群管理
- 实现群组的创建、解散
- 实现用户申请加入群组
- 实现用户查看已加入的群组
- 实现群组成员退出已加入的群组
- 实现群组成员查看群组成员列表
- 实现群主对群组管理员的添加和删除
- 实现群组管理员批准用户加入群组
- 实现群组管理员/群主从群组中移除用户
- 实现群组内聊天功能
聊天功能
对于 私聊和群组 的聊天功能均需要实现:
- 实现查看历史消息记录
- 实现用户间在线聊天
- 实现在线用户对离线用户发送消息,离线用户上线后获得通知
- 实现文件发送的断点续传
- 实现在线发送文件
- 实现在线用户对离线用户发送文件,离线用户上线后获得通知/接收
服务器
1.使用epoll监听套间字,使用epoll监听客户端是否有读操作,如果有读操作,就将该套间字从监听红黑树摘下,然后读取客户端发送的要执行的操作,将操作放入线程池队列中执行,等操作执行完再将套间字放到监听红黑树上。
2.ET边沿触发模式
3.使用redis数据库
4.使用nlohmann/json序列化和反序列化
5.使用线程池对任务进行处理
客户端
1.使用两个线程,一个线程从服务器读取数据,实现弹窗功能,即有人添加好友或有人发送消息会有一个消息提示。
2.聊天的时候创建一个新线程,一个线程专门用来发送消息,一个线程专门用来读取消息。聊天结束后读取的线程自动销毁。