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 上的正斜杠 /),从而生成正确的路径…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...

倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...