即时通信系统项目总览

news2025/1/11 8:10:12

聊天室服务端项目总体介绍

    本项目是一个全栈的即时通信系统, 前端使用QT实现聊天客户端, 后端采⽤微服务框架设计, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端
拆分的微服务包含:

  • 网关服务器:主要⽤于与客⼾端直接交互,接收客⼾端的各项请求提供服务。
  • 用户管理子服务:主要⽤于管理⽤⼾的数据,以及关于⽤⼾信息的各项操作。
  • 好友管理子服务:主要⽤于管理好友与聊天会话管理相关的数据与操作。
  • 消息转发管理⼦服务:主要⽤于封装消息进⾏转存,然后告诉⽹关服务器⼀条消息应该发给谁。
  • 消息存储子服务:主要⽤于进⾏消息元信息的存储与搜索功能。
  • 文件管理子服务:主要⽤于管理系统中⽂件类型数据的存储,⽐如用户头像,⽂件消息等。
  • 语音子服务:⽤于调⽤语⾳识别SDK,进⾏语⾳识别,将语⾳转换为⽂字
    项目大概

网关子服务

    网关子服务负责和客户端进行交互

  1. 用户鉴权
        网关要负责进行用户鉴权, 客户端登录成功后, 后端会返回一个会话id, 客户端以后的每次操作都要带上这个会话id, 网关每次都要检测这个会话id是否有效, 否则视为未登录,不予提供除注册/登录/验证码获取以外的所有服务
  2. 请求转发
        这里的请求一般为HTTP请求, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端
  3. 消息推送
        网关要主动推送一些数据, 比如用户的好友申请, 消息的到来等

用户子服务

    用户管理子服务,主要用于管理用户的数据,以及关于用户信息的各项操作

  1. 用户注册/登录
        用户输入用户名(昵称),以及密码进行用户名的注册/登录
  2. 短信验证码获取
        用户进行手机号+验证码登录/注册时, 发送短信验证码
  3. 用户信息修改
        修改用户的各项信息, 比如头像, 用户昵称, 用户签名, 手机号, 密码

文件子服务

    文件管理子服务,主要用于管理用户的头像,以及消息中的文件存储

  1. 文件上传
        文件的单次/批量上传, 返回文件id
  2. 文件下载
        通过文件id对文件的单次/批量下载

语音子服务

    语音转换子服务,用于调用语音识别 SDK,进行语音识别,将语音转为文字后返回给网关

  1. 语音转文字
        通过百度云的语音服务来处理

消息转发子服务

    主要用于针对一条新消息内容,组织消息的 ID 以及各项所需要素,然后告诉网关服务器一条消息应该发给谁

  1. 获取转发列表
        获取该消息应该转发到哪些会话, 除此之外,转发子服务将收到的消息,放入消息队列中,由文件子服务/消息子服务进行存储

消息储存子服务

    消息管理子服务,主要用于管理消息元信息的存储

  1. 消息储存
        对新消息进行存储
  2. 获取最近消息
        获取最近的N条消息, 或者按照时间段获取消息
  3. 消息搜索
        对消息进行搜索查找

好友管理子服务

    主要用于管理好友和会话相关的数据与操作

  1. 好友列表的获取
        当用户登录成功之后,获取自己好友列表进行展示
  2. 申请好友
        搜索用户之后,点击申请好友,向对方发送好友申请
  3. 待处理申请的获取
        当用户登录成功之后,会获取离线的好友申请请求以待处理
  4. 好友申请的处理
        针对收到的好友申请进行同意/拒绝的处理
  5. 删除好友
        删除当前好友列表中的好友
  6. 用户搜索
        可以进行用户的搜索用于申请好友
  7. 聊天会话列表的获取
        每个单人/多人聊天都有一个聊天会话,在登录成功后可以获取聊天会话,查看历史的消息以及对方的各项信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理之 TCP 协议

目录 1. TCP 协议格式 2. TCP 原理 (1) 确认应答 (2) 超时重传 (3) 连接管理 a) 三次握手 b) 四次挥手 (4) 滑动窗口 (5) 流量控制 (6) 拥塞控制 (7) 延时应答 (8) 捎带应答 3. TCP 特性 4. 异常情况的处理 1) 进程崩溃 2) 主机关机 (正常流程) 3) 主机掉电 (…

从零开始的使用SpringBoot和WebSocket打造实时共享文本应用

在现代应用中,实时协作已经成为了非常重要的功能,尤其是在文档编辑、聊天系统和在线编程等场景中。通过实时共享文档,多个用户可以同时对同一份文档进行编辑,并能看到其他人的编辑内容。这种功能广泛应用于 Google Docs、Notion 等…

「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果

本篇将带你实现一个带有闪烁动画的按钮交互效果。通过动态改变按钮颜色,用户可以在视觉上感受到按钮的闪烁效果,提升界面互动体验。 关键词 UI互动应用闪烁动画动态按钮状态管理用户交互 一、功能说明 闪烁按钮效果应用实现了一个动态交互功能&#xf…

SSM报错:表现层方法应该返回字符串,但是返回页面

在进行SSM项目时,后端表现层应该返回给前端字符串,但是却跳转页面 1.首先检查是否使用ResponseBody注解 ResponseBody注解 作用:将java对象转为json格式的数据。将controller的方法返回的对象通过适当的转换器转换为指定的格式之后&#xff0…

重生之我在异世界学编程之C语言:深入结构体篇(上)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文《1》 结构体的两种声明一、结构…

Diffusion中guidance_scale 的理解

guidance_scale 是一个控制生成图像引导程度的参数。它的含义和使用与论文 Imagen: Photorealistic Text-to-Image Diffusion Models with Composable Conditions 中的公式 (2) 的引导权重 类似。 1. Classifier-Free Guidance 的背景 Classifier-Free Guidance 是一种在扩散…

【kettle】mysql数据抽取至kafka/消费kafka数据存入mysql

目录 一、mysql数据抽取至kafka1、表输入2、json output3、kafka producer4、启动转换,查看是否可以消费 二、消费kafka数据存入mysql1、Kafka consumer2、Get records from stream3、字段选择4、JSON input5、表输出 一、mysql数据抽取至kafka 1、表输入 点击新建…

新书速览|循序渐进Node.js企业级开发实践

《循序渐进Node.js企业级开发实践》 1 本书内容 《循序渐进Node.js企业级开发实践》结合作者多年一线开发实践,系统地介绍了Node.js技术栈及其在企业级开发中的应用。全书共分5部分,第1部分基础知识(第1~3章)&#xf…

基于大模型的图像重命名工具ai-renamer

文章目录 基础使用语言问题命名风格 基础使用 ai-renamer是一款自动为图片重命名的工具,由于需要调用基于本地大模型,在使用之前需要用Ollama或者LM Studio配置好至少一个大模型,比如Llava, Gemma, Llamad等。如果想要为视频重命名&#xff…

element Cascader级联选择器 点文字即可选中,去掉radio按钮

需求 将示例的点击radio和点击文字功能结合在一起。可以选择任意一级的内容,直接点击文字即可选中,同时如果有下一级就展示,去掉radio标签。 实现方法 通过css将radio标签做成文字框一样大小并且透明覆盖在整个文字上方,点击文…

【已解决】黑马点评项目中启动Spring Boot服务失败,com.sun.tools.javac.tree.JCTree qualid

黑马点评项目中启动Spring Boot服务失败 报错提示 java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualid这是因为 lombok 版本不兼容造成的 找到 pom.xml 文件&#xff0…

C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码

一、目标识别技术概述 1、摘要 目标检测是计算机视觉中最基本和最具挑战性的问题之一,它试图从自然图像中的大量预定义类别中定位目标实例。深度学习技术已成为直接从数据中学习特征表示的强大策略,并在通用目标检测领域取得了显著突破。鉴于这一快速发…

绿虫光伏设计系统:清洁能源的未来

煤炭、石油、天然气是我们现在依赖的重要能源,但这些能源难以再生,而且开采过程中会产生污染。太阳能发电作为清洁能源的一种重要形式,受到了越来越多的关注。绿虫光伏发电系统,不仅考虑到其发电效率,还可以考虑其经济…

2025澄迈漓岛音乐节品牌招商大会成功举行

——共谋音乐盛事,携手推动文化经济发展 12月6日,“2025澄迈漓岛音乐节品牌招商大会”(以下简称“招商大会”)在澄迈举行。本次大会由澄迈福山发展有限公司、福山咖啡文化风情镇旅游区联合主办,海南绿发投资有限公司承…

基于Java和Vue开发的漫画阅读软件漫画阅读小程序漫画APP

前景分析 受众广泛:漫画的受众群体广泛,不仅限于青少年,还涵盖了成年人等多个年龄层和社会阶层。漫画文化在全球范围内的影响力不断扩大,未来漫画软件创业可以考虑全球市场的拓展。 市场需求大:数字化阅读趋势下&…

Lua中实现HTTP请求的User-Agent自定义

User-Agent(用户代理)是HTTP请求头的一部分,用于描述发出请求的客户端的信息,包括浏览器类型、版本和操作系统等。自定义User-Agent对于开发者来说是一个重要的功能,它可以帮助服务器识别请求来源,也可以模…

dell电脑开不了机怎么回事?戴尔电脑无法开机解决方法

dell戴尔电脑开不了机,这是很多使用dell电脑用户常遇到的问题。这种故障情况是由多种原因引起,包括硬件故障、软件问题或电源问题等等。dell电脑开不了机怎么办呢?下面便为大家介绍一下相关解决修复方法,帮助用户解决戴尔电脑无法…

148. 排序链表(java) 标记一下

我的思路是插入排序,然而时间超出限制!!! 时间复杂度是 O(nlogn) 的排序算法包括归并排序、堆排序和快速排序(快速排序的最差时间复杂度是 O(n 2)),最适合链表的排序算法是归并排序。 题目描述…

C语言实验 二维数组

时间:2024.12.6 一、实验 7-1 矩阵运算 代码 #include<stdio.h> int main(){int a[20][20]={0};int n,i,j;int sum=0;scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);if((i!=n-1)&&(j!=n-1)&am…

物通博联,smart200配置

设备&#xff1a;物通博联smart200plc交换机 网线直连&#xff0c;并网&#xff0c;本地链接&#xff0c;电脑直连 配置电脑ip&#xff0c;以太网修改ip网段为2段&#xff0c;ping通192.168.2.1 浏览器访问192.18.2.1&#xff0c;输入账号密码进入后台配置页面 &#xff0c;…