宝山网站建设方案,连云港网站建设方案,代运营网站建设,网站和app设计区别websocket身份验证
前言
上一集我们就完成了websocket初始化的任务#xff0c;那么我们完成这个内容之后就应该完成一个任务#xff0c;当客户端与服务端连接成功之后#xff0c;客户端应该主动发起一个身份认证的消息。
身份认证proto
我们看一眼proto文件的内容。
我…websocket身份验证
前言
上一集我们就完成了websocket初始化的任务那么我们完成这个内容之后就应该完成一个任务当客户端与服务端连接成功之后客户端应该主动发起一个身份认证的消息。
身份认证proto
我们看一眼proto文件的内容。
我们需要传输的内容有一个请求id一个会话id。
这个会话id就是我们在dataCenter的loginSessionId 我们这里的请求id我们不仅仅要在这个会话id是唯一的我们还要在所有的会话都是唯一的。所以我们可以用UUID来实现这个功能。
UUID生成请求id
我们就要UUID生成的最后一段子串初始位置是25长度为12。
QString NetClient::makeRequestId()
{//确保请求id不重复//UUIDreturn R QUuid::createUuid().toString().sliced(25,12);
}
发送身份认证
我们先获取proto文件里的这个req之后生成请求id将dataCenter里面的loginSessionId放入我们的req当中之后让我们的req经过序列化器的洗礼
//发送身份认证
void NetClient::sendAuth()
{bite_im::ClientAuthenticationReq req;req.setRequestId(makeRequestId());//随机生成唯一的请求idreq.setSessionId(dataCenter-getLoginSessionId());//会话idQByteArray body req.serialize(serializer);webSocketClient.sendBinaryMessage(body);LOG() [WS身份认证]requestId req.requestId() , loginSessionId req.sessionId();
}
这样就可以了
测试
由于我们的dataCenter里面包含我们NetClient的实例当我们创建dataCenter的实例的时候也会创建一个NetClient的实例。我们就加入下面代码即可 model::DataCenter* dataCenter model::DataCenter::getInstance();dataCenter-ping();
我们就可以看到以下内容 、
那么我们的网络通信就是可以跑通了那么我们下一集开始就要回到主界面的内容啦