websocket身份验证

ops/2024/11/20 4:26:51/

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();

我们就可以看到以下内容:

那么我们的网络通信就是可以跑通了,那么我们下一集开始就要回到主界面的内容啦!


http://www.ppmy.cn/ops/135148.html

相关文章

git相关知识

前言&#xff1a;在学习git之前首先需要了解几个概念&#xff1a;工作区&#xff0c;暂存区&#xff0c;版本库。 工作区&#xff1a;是电脑上写代码或者文件的目录。 暂存区&#xff1a;一般存放在.git目录下的index中&#xff0c;也称索引。&#xff08;git add&#xff09…

Executor和Service

Executor和Service是Android开发中两个重要的概念&#xff0c;它们都用于处理后台任务&#xff0c;但有着不同的用途和特点。让我们来详细比较一下&#xff1a; 1. Executor&#xff08;执行器&#xff09;&#xff1a; 定义&#xff1a;Executor是一个接口&#xff0c;用于管…

Windows系统 ElasticSearch,分词器、Kibana安装

目录 1.wins安装ElasticSearch1.下载es安装包2.下载分词器3.注意事项4.学会看报错日志 2.将 elasticsearch 以服务的方式安装安装ES解压到根盘符下&#xff0c;如C或E盘等&#xff0c;因为 E:\Program Files文件夹下的都是默认的只读权限&#xff0c;所以换到没有只读权限&…

SPIRiT-Diffusion:基于自一致性驱动的加速MRI扩散模型|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 SPIRiT-Diffusion: Self-Consistency Driven Diffusion Model for Accelerated MRI SPIRiT-Diffusion&#xff1a;基于自一致性驱动的加速MRI扩散模型 01 文献速递介绍 磁共振成像&#xff08;MRI&#xff09; 在临床和研究领域被广泛应用。然而&#xff0c;其…

GPT-5 要来了:抢先了解其创新突破

Microsoft 的工程师计划于 2024 年 11 月在 Azure 上部署 Orion (GPT-5)。虽然这一版本不会向公众开放&#xff0c;但其上线被视为人工智能领域的一个重要里程碑&#xff0c;并将产生深远的影响。 文章目录 GPT-5 真的要来了GPT-4 的局限性GPT-5 的创新突破与遗留挑战GPT-5 预期…

【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)

向量(Vector)和矩阵(Matrix)&#xff1a;用于表示数据集&#xff08;Dataset&#xff09;和特征&#xff08;Feature&#xff09;。矩阵运算&#xff1a;加法、乘法和逆矩阵(Inverse Matrix)等&#xff0c;用于计算模型参数。特征值(Eigenvalues)和特征向量(Eigenvectors)&…

掌握ECMAScript模块化:构建高效JavaScript应用

标题&#xff1a;掌握ECMAScript模块化&#xff1a;构建高效JavaScript应用 在现代JavaScript开发中&#xff0c;模块化编程已经成为一个不可或缺的概念。它帮助我们管理和组织代码&#xff0c;提高代码的复用性和可维护性。本文将深入探讨ECMAScript模块化的实现&#xff0c;…

使用Go语言开发一个高性能的Web服务器,支持静态文件服务和实时通信。

江河湖海的编程之旅&#xff1a;打造你的Go语言Web服务器 环境搭建 安装Go语言环境 首先&#xff0c;我们需要安装Go语言环境。这就像是在江河湖海中寻找一片适合航行的水域&#xff0c;找到之后&#xff0c;我们就可以开始我们的编程之旅了。 下载并安装Go语言环境。你可以…