在用户注册模块,由ChatService::registerHandler
函数处理业务。
void ChatService::registerHandler(const TcpConnectionPtr &conn, json &js, Timestamp time)
{
/.../
}
我们从传递过来的json
对象中获取用户 ID 和用户密码。并用此信息初始化一个User
对象,其初始状态设置为offline
。
之后调用 model 层代码与数据库交互,插入这个用户的信息。若成功则发出response
信息,记得需要将信息序列化,conn->send(response.dump());
。
void ChatService::registerHandler(const TcpConnectionPtr &conn, json &js, Timestamp time)
{
LOG_DEBUG << "do regidster service!";
std::string name = js["name"];
std::string password = js["password"];
User user;
user.setName(name);
user.setPassword(password);
bool state = _userModel.insert(user);
if (state)
{
// 注册成功
json response;
response["msgid"] = REGISTER_MSG_ACK;
response["errno"] = 0;
response["id"] = user.getId();
// json::dump() 将序列化信息转换为std::string
conn->send(response.dump());
}
else
{
// 注册失败
json response;
response["msgid"] = REGISTER_MSG_ACK;
response["errno"] = 1;
// 注册已经失败,不需要在json返回id
conn->send(response.dump());
}
}
用户注册模块测试
这是一开始的 MySQL 表
我们将创建一个新的用户 test_user
,可以看到提示创建成功
我们去数据库里面查看,可以查看到test_user