websocket身份验证
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();
我们就可以看到以下内容:

、
那么我们的网络通信就是可以跑通了,那么我们下一集开始就要回到主界面的内容啦!
相关文章:
websocket身份验证
websocket身份验证 前言 上一集我们就完成了websocket初始化的任务,那么我们完成这个内容之后就应该完成一个任务,当客户端与服务端连接成功之后,客户端应该主动发起一个身份认证的消息。 身份认证proto 我们看一眼proto文件的内容。 我…...
案例解读 | 某三甲医院IT监控体系升级实例
PART 01 项目背景 01客户介绍 案例医院是一家某省省属大型三级甲等综合医院。该医院占地三百余亩,总建筑面积约26万平方米,开放床位1500张,资产总值约15亿元,其规划建设一流,拥有诸多先进配套设施,建设项目…...
Ubuntu20.04 为脚本文件创建桌面快捷方式 ubuntu
Ubuntu20.04 为脚本文件创建桌面快捷方式 在Ubuntu 20.04中,为脚本文件(如 .sh 文件)创建桌面快捷方式是一种提升用户效率的实用方法,允许用户通过图形用户界面直接执行重要或常用的脚本。以下是一种详细、专业且逻辑清晰的通用方…...
LeetCode297.二叉树的序列化和反序列化
题目要求 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序…...
应用程序部署(IIS的相关使用,sql server的相关使用)
数据服务程序(API)部署 1、修改配置文件 打开部署包中的web.config配置文件,确认数据库登录名和密码正确 修改ip为电脑IP(winR输入cmd,输入ipconfig,IPv4对应的就是本机IP) 2、打开IIS&#x…...
小程序源码-模版 100多套小程序(附源码)
一、搭建开发环境 搭建环境可以从这里开始: 微信小程序从零开始开发步骤(一)搭建开发环境 - 简书 二、程序示例 1、AppleMusic https://download.csdn.net/download/m0_54925305/89977187 2、仿B站首页 https://download.csdn.net/downlo…...
UE5运行时创建slate窗口
加入"Slate","SlateCore"模块 Actor.cpp // Fill out your copyright notice in the Description page of Project Settings.#include "MyWindowClass.h"// Sets default values AMyWindowClass::AMyWindowClass() {// Set this actor to call…...
浅谈C#之单线程流式适配器
一、基本介绍 在C#中,单线程流式适配器通常用于处理流式数据,如网络通信或文件操作中的连续数据流。这些数据流可能是有序的,并且数据包之间可能会发生粘连,即没有明确的分界线,导致粘包和半包问题。解决这些问题的关键…...
【更新中】《硬件架构的艺术》笔记(三):处理多个时钟
介绍 单时钟设计更易于实现,也更少出现亚稳态、建立和保持时间违例方面的问题。但在实践中,很少有设计只在一个时钟下运行。 多时钟域 多个始终可以有以下一种或多种时钟关系: 1、时钟频率不同。 2、时钟频率相同,但相位不同…...
【matlab】数据类型01-数值型变量(整数、浮点数、复数、二进制和十六进制)
文章目录 一、 整数1.1 整数的最值1.2 大整数1.3 当整数值超过了uint64最大值1.4 和其它类型数值运算 二、 浮点数2.1 双精度和单精度2.2 浮点数的存储2.3 浮点数的最值2.4 浮点数的“四舍五入”2.5 浮点数的算术运算2.6 意外:舍入误差、抵消、淹没和中间转换 三、复…...
引入第三方jar包部署服务器后找不到jar处理方法
在使用Spring Boot打包为可执行的JAR文件并部署到服务器时,有时会遇到找不到第三方JAR包的问题。这通常是因为服务器上缺少了这些JAR包,或者JAR包的版本不匹配。下面我将介绍两种常见的解决方案:使用Maven安装本地JAR包和使用Maven插件方式。…...
neo4j desktop基本入门
下载安装不在赘述,本文只记述一些neo4j的基本入门操作 连接本地neo4j数据库 1. 点击ADD添加连接 端口一般是7687 账户名和密码忘记了,可以通过neo4j web(默认为neo4jneo4j://localhost:7687/neo4j - Neo4j Browser)重置密码 AL…...
前端系统设计面试题(二)Javascript\Vue
如何设计一个基于 WebAssembly 的前端应用,并实现简单的计算功能? 设计一个基于 WebAssembly 的前端应用并实现简单计算功能,可以按照以下步骤进行: 编写计算功能的代码: 使用C、C或Rust等语言编写计算功能的代码。例…...
军工行业运维:监控易引领自主可控新潮流
在军工行业,信息安全和技术创新始终是发展的重中之重。随着信息化建设的不断深入,对监控产品的要求也日益严格。 监控易作为一款高性能、全面性的运维监控解决方案,凭借其国产化、自主可控的特性,以及对军工行业特殊需求的深刻理解…...
unity3d————接口基础知识点
接口的基本概念 定义接口:使用 interface 关键字定义接口。接口中的成员默认是 public,不能有访问修饰符,也不能包含字段、构造函数或实现的方法,只能包含方法、属性、事件和索引器的声明。 实现接口:类使用 : 冒号后…...
蓝队基础5 -- 安全策略与防护技术
声明: 本文的学习内容来源于B站up主“泷羽sec”视频“蓝队基础之网络七层杀伤链”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关…...
【Bluedroid】A2dp初始化流程源码分析
一、概述 Bluedroid是Android系统中用于蓝牙通信的底层协议栈,它支持多种蓝牙协议,包括A2DP(Advanced Audio Distribution Profile,高级音频分发协议)。A2DP主要用于通过蓝牙传输高质量音频,如立体声音乐。以下是Bluedroid中A2DP初始化的基本流程。 1.1. 启动Bluetooth…...
Redis简介、数据结构、高性能读写、持久化机制、分布式架构
Redis 是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件等,以下是对 Redis 的详细介绍: 数据结构丰富 Redis 支持多种数据结构,如字符串(String)、哈希(Hash&am…...
鸿蒙自定义UI组件导出使用
上期讲解了在Entry入口写了一个系统的下拉列表组件,如果我们想要封装一个可供复用的组件供团队其他人使用,那么需要掌握一下自定义组件的写法: 1、自定义可导入组件 - export 声明模块 如果要定义一个在外部可使用的组件 , 需要再定义组件…...
python os.path.join 详解
os.path.join 是 Python 中 os 模块提供的一个函数,用于智能地连接一个或多个路径组件。它可以根据操作系统的不同,自动选择合适的路径分隔符(如 Windows 上的反斜杠 \ 或 Unix/Linux 上的正斜杠 /),从而生成正确的路径…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
