一、使用的技术栈和环境
1.客户端
环境:Win11
开发工具:QT6
语言:C++
组件:PROTOBUF(网络通讯时的序列化和反序列化)
Httplib库(用于前端向后端发送请求和接收响应)
Websocket库(用于后端主动向前端推送消息 例如:新消息的接收提示,添加好友的推送,好友添加成功的推送,建立会话的推送,群聊建立会话的推送)
2.服务端
环境:ubuntu 22.04
开发工具:vscode, cmake,Makefile
语言:C++
组件:spdlog日志(用来对服务器代码运行情况的记录)
gflags(用来对服务器初始化配置参数的工具)
etcd(用来对每个微服务器的上线进行发现添加管理的)
Brpc(用来对每个微服务器之间的请求和响应进行接收和发送的与etcd和PROTOBUF配合使用)
PROTOBUF(用来进行网络通信中的序列化和反序列化的在微服务器之间和微服务器与客户端之间)
ES(用来对于用户消息和用户个人信息进行存储,使得客户端对这二者发起搜索请求时,相比数据库搜索可以更快得到结果)
Httplib库(用于前端向后端发送请求和接收响应)
Websocket库(用于后端主动向前端推送消息 例如:新消息的接收提示,添加好友的推送,好友添加成功的推送,建立会话的推送,群聊建立会话的推送)
Redis(用来存储一些不会一直存在的数据,例如验证码,用户登录会话)
ODB(用来实现C++中的类生成对应的mysql表并且对表进行增删查改)
RabbitMQ(用来实现用户信息的产生和消费)
短信验证码SDK(发送验证码)
语音识别SDK(用来实现语音转文字)
Mysql数据库
二、软件功能
1. 即时聊天
1:一对一文本消息功能:我们的软件支持一对一的即时通讯,用户可以实时发送和接收包含文字表情、链接以及图片等多种形式的消息。这种单聊功能使得沟通更加灵活和个性化。
2:消息提醒功能:软件具备在线和离线消息提醒功能。当用户在线时,新消息会即时提醒用户;即使用户不在线,软件也会在用户下次登录时提醒,确保用户不会错过任何重要信息。
3:离线消息保持功能:即使用户离线,也不必担心错过任何消息。当用户重新登录软件时,所有离线期间收到的消息都会完整地推送给用户,确保沟通的连续性。
4:云端消息存储:所有的消息都会安全地存储在我们的后端服务器上,这意味着用户不需要担心本地存储空间的问题。用户的设备不会因为存储大量消息而占用内存空间。
5:消息的搜索功能:所有的消息都会有一个生成时间,用户可以根据会话框对消息进行搜索(可以通过消息内容搜索和消息的产生时间搜索)
6:语音转文字功能:发送的语音消息可以存在转文字的服务
2.群聊服务
1:群聊的建立:群聊是当你和某个好友单聊时想要加入别人就可以之间添加另一个人组成新会话,建立群聊
群聊建立页面
2:群聊内部的聊天也具有即时聊天的所有性质
3:群聊的销毁:群聊会有销毁选项,当群聊销毁后,后端也会删除对这个群聊的所有消息,使得用户的隐私不会泄露
3. 文件传输与共享
1,多格式文件传输:支持发送和接收多种文件格式,包括图片、文档(PDF、Word、Excel等)、音频、视频等。
用户文件上传界面
- 文件云端存储与管理:所有传输的文件都可以选择保存在云端,便于用户随时访问历史文件。
- 大文件支持:微服聊支持大文件的上传与下载,可以处理大文件传输过程中的稳定性和效率问题。
4. 安全性与隐私保护
1,双重登录验证:我们提供两种安全的用户登录方式,包括密码加昵称的传统登录和便捷的手机号验证码登录,以增强账户的安全性。
2,账号唯一在线限制:为了保证账户安全,同一用户账号在同一时间只能有一个在线会话。如果账号已在线,其他设备尝试登录同一账号将被阻止,确保了账号的唯一性和安全性。
3,登录界面的机器验证:我们的用户登录界面集成了机器验证机制,有效防止了通过自动化遍历数据来破解密码的尝试,进一步增强了账户的安全性。
- 隐私保护的聊天数据管理:当用户选择删除群聊或好友后,我们不仅会从前端移除这些联系人,还会在后端服务器上删除所有相关的聊天数据,以确保用户的隐私安全得到保护。
- 好友的添加和申请
- 好友搜索与添加功能:在聊天界面的顶部,用户可以利用好友搜索功能,通过输入对方的ID、电话号码或昵称来查找并添加好友。用户在搜索到目标联系人后,可以发送好友申请。为确保沟通的秩序,系统设计为每位用户对同一对象只能发送一次好友申请。若对方尚未对用户的申请作出响应,系统将不允许用户重复发送申请,以维护沟通的规范性和有效性。
2,好友申请响应机制:当其他用户向用户发送好友申请时,系统会在用户在线状态下即时发出提示。用户可以在好友申请栏中查看这些申请,并进行相应的操作。用户只需点击同意,即可与对方建立好友关系,并创建相应的会话,以便进行后续的沟通。
好友申请列表
- 个人信息的修改
- 头像修改:在用户账户建立初期,系统将为用户分配一个默认头像。用户可以根据个人喜好对头像进行自定义修改,以展现个人风格。
- UID(用户唯一标识):UID是用户在注册时由后端系统生成的唯一编号,用于区分不同的用户。由于UID的唯一性和识别功能,它是不可修改的
- 昵称和个人介绍修改:昵称和个人介绍是用户个性化设置的重要组成部分,用户可以根据自己的意愿随时进行更改,以反映个人的最新信息和个性。
- 电话号码更改:用户在更改或绑定新的电话号码时,需要通过验证码验证以确保操作的安全性。此外,系统将检查新提供的手机号码是否已被其他用户绑定,以防止重复使用。如果手机号码已被数据库中与另一个账户关联,用户将无法使用该号码进行绑定。
2:群聊内部的聊天也具有即时聊天的所有性质
3:群聊的销毁:群聊会有销毁选项,当群聊销毁后,后端也会删除对这个群聊的所有消息,使得用户的隐私不会泄露