文章目录
作者:borange
时间:2021/8/9 17:27
开发环境:Ubuntu VSCode
编译器:g++
数据库:MySQL
编程语言:C++
GitHub链接
项目概述
完成一个类似于QQ的项目,主要功能有注册、登陆、添加好友、创建群组、加入群组、一对一聊天、群聊天等等。
我们需要有服务器端和客户端,为了降低网络模块和业务模块的耦合性,我们这里采用MVC架构。
数据模块
表的设计
作为一个聊天项目,我们当然需要有很多的表来存储一些信息,例如客户端在登陆时,服务端需要在库中匹配相应的账号、密码信息来验证身份,用户注册时,我们也需要向表中去写入对应的 账号、密码等等。
user表
用于存放用户账号、密码、昵称、在线状态等信息
friend表
用于存放用户的好友信息
allGroup表
用于服务器管理用户已创建的所有群组信息
groupUser表
存放群组内所有的群成员信息,包括成员的角色,比如:群主(creator)、群员(normal).
offlineMessage表
用户除了能在线接收其他用户的信息,也能接受离线信息,离线信息存储在offlineMessage表中,等用户登录以后,将内容推给用户。
通信格式
服务器和客户端的通信采用了JSON来完成数据在网络中的标准传输。
对于不同的数据则是采用了不同的格式,具体如下:
1.登录
json["msgid"] = LOGIN_MSG;
json["id"] //用户id
json["password"] //密码
2.登录反馈
json["msgid"] = LOGIN_MSG_ACK;
json["id"] //登录用户id
json["name"] //登录用户密码
json["offlinemsg"] //离线消息
json["friends"] //好友信息,里面有id、name、state三个字段
json["groups"] //群组信息,里面有id,groupname,groupdesc,users三个字段
//users里面则有id,name,state,role四个字段
json["errno"] //错误字段,错误时被设置成1,用户不在线设置成2
json["errmsg"] //错误信息
3.注册
json["msgid"] = REG_MSG;
json[