当前位置: 首页 > news >正文

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

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

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

http://www.lryc.cn/news/484244.html

相关文章:

  • 案例解读 | 某三甲医院IT监控体系升级实例
  • Ubuntu20.04 为脚本文件创建桌面快捷方式 ubuntu
  • LeetCode297.二叉树的序列化和反序列化
  • 应用程序部署(IIS的相关使用,sql server的相关使用)
  • 小程序源码-模版 100多套小程序(附源码)
  • UE5运行时创建slate窗口
  • 浅谈C#之单线程流式适配器
  • 【更新中】《硬件架构的艺术》笔记(三):处理多个时钟
  • 【matlab】数据类型01-数值型变量(整数、浮点数、复数、二进制和十六进制)
  • 引入第三方jar包部署服务器后找不到jar处理方法
  • neo4j desktop基本入门
  • 前端系统设计面试题(二)Javascript\Vue
  • 军工行业运维:监控易引领自主可控新潮流
  • unity3d————接口基础知识点
  • 蓝队基础5 -- 安全策略与防护技术
  • 【Bluedroid】A2dp初始化流程源码分析
  • Redis简介、数据结构、高性能读写、持久化机制、分布式架构
  • 鸿蒙自定义UI组件导出使用
  • python os.path.join 详解
  • JavaScript高效处理CSV文件的操作指南
  • Go开发指南- Goroutine
  • Dubbo 3.x源码(24)—Dubbo服务引用源码(7)接口级服务发现订阅refreshInterfaceInvoker
  • 高级java每日一道面试题-2024年11月04日-Redis篇-Redis如何做内存优化?
  • 数据结构 -二叉搜索树
  • Ubuntu配置阿里云docker apt源
  • 【React】状态管理之Redux
  • 3195. 有趣的数-13年12月CCF计算机软件能力认证(组合数)
  • 基于 Python 的 Bilibili 评论分析与可视化
  • 大语言模型理论基础
  • 【 LLM论文日更|检索增强:大型语言模型是强大的零样本检索器 】