news 2026/6/26 1:32:17

即时通讯项目--Gateway

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
即时通讯项目--Gateway

核心功能与通信方式设计

(一)两大核心功能

  1. 作为入口服务器接收客户端所有请求,完成子服务分发并将处理后的响应反馈给客户端。
  2. 向客户端推送各类事件通知,包括好友申请 / 处理 / 删除、单聊 / 群聊会话创建、新消息提醒等。

(二)两种通信方式

网关服务器基于核心功能设计了两类通信,各司其职:

  1. HTTP 通信:负责各类业务处理相关的请求与响应。
  2. WEBSOCKET 通信:专门用于向客户端进行各类事件通知。

模块功能示意图

接口实现流程

所有接口的实现均基于 HTTP 请求处理,核心流程围绕ProtoBuf 反序列化鉴权(部分接口)子服务查找与调用结果响应展开,部分接口包含事件通知的额外步骤。按功能可将接口分为用户基础操作好友相关操作聊天会话与消息操作文件与语音操作四大类,各类接口的实现步骤如下:

(一)用户基础操作接口

包含用户名 / 手机号码注册、用户名 / 手机号码登录、短信验证码获取、用户信息获取、用户头像 / 签名 / 昵称 / 绑定手机号修改,注册 / 登录 / 验证码获取为基础步骤,信息查询与修改需增加鉴权步骤:

  1. 基础步骤(注册 / 登录 / 验证码获取)① 取出 HTTP 请求正文,进行 ProtoBuf 反序列化;② 查找用户子服务;③ 调用用户子服务对应接口处理业务;④ 将处理结果响应给客户端。
  2. 鉴权步骤(信息查询 / 修改)在基础步骤②前增加:根据请求中的会话 ID 鉴权,获取用户 ID 并写入请求中,后续步骤一致。

(二)好友相关操作接口

此类接口均需先完成鉴权,部分接口需调用多个子服务并触发事件通知,是流程较复杂的一类接口,包含获取好友列表、发送好友申请、获取待处理好友申请、好友申请处理、删除好友、搜索用户:

  1. 基础好友操作(获取好友列表 / 待处理申请 / 搜索用户)① ProtoBuf 反序列化;② 会话 ID 鉴权并设置用户 ID;③ 查找好友子服务;④ 调用接口处理业务;⑤ 响应客户端。
  2. 发送好友申请① ProtoBuf 反序列化;② 鉴权并设置用户 ID;③ 查找用户子服务并调用,获取用户详细信息;④ 查找好友子服务并调用对应接口;⑤ 处理成功则根据被申请人 ID 查找其长连接,在线则推送好友申请通知;⑥ 响应客户端。
  3. 好友申请处理① ProtoBuf 反序列化;② 鉴权并设置用户 ID;③ 查找用户子服务并调用,获取申请人与被申请人详细信息;④ 查找好友子服务并调用对应接口;⑤ 处理成功则向申请人推送申请处理结果通知;⑥ 若处理结果为同意,则为申请人和处理者分别推送聊天会话创建通知(基于会话 ID、对方昵称 / 头像组织会话信息);⑦ 清理响应中的会话 ID 信息;⑧ 响应客户端。
  4. 删除好友① ProtoBuf 反序列化;② 鉴权并设置用户 ID;③ 查找好友子服务并调用接口;④ 处理成功则根据被删除者 ID 查找其长连接,在线则推送好友删除通知;⑤ 响应客户端。

(三)聊天会话与消息操作接口

包含获取用户聊天会话列表、创建多人聊天会话、获取消息会话成员列表、发送新消息、获取指定时间段消息列表、获取最近 N 条消息列表、搜索关键字历史消息,消息查询类仅需基础鉴权与子服务调用,会话创建 / 发消息包含事件通知:

  1. 消息查询类(多时段消息 / 最近 N 条 / 关键字搜索)① ProtoBuf 反序列化;② 鉴权并设置用户 ID;③ 查找消息存储子服务;④ 调用接口处理业务;⑤ 响应客户端。
  2. 会话基础操作(会话列表 / 成员列表)① ProtoBuf 反序列化;② 鉴权并设置用户 ID;③ 查找好友子服务;④ 调用接口处理业务;⑤ 响应客户端。
  3. 创建多人聊天会话① ProtoBuf 反序列化;② 鉴权并设置用户 ID;③ 查找好友子服务并调用接口;④ 处理成功则循环查找所有会话成员长连接,逐个推送会话创建通知;⑤ 清理响应中的会话信息;⑥ 响应客户端。
  4. 发送新消息① ProtoBuf 反序列化;② 鉴权并设置用户 ID;③ 查找消息转发子服务并调用接口;④ 处理成功则根据结果中的用户 ID 列表,循环查找目标长连接并推送新消息通知;⑤ 处理失败则根据错误信息设置响应内容;⑥ 响应客户端。

(四)文件与语音操作接口

此类接口均需完成鉴权,按功能分为文件操作(单个 / 多个文件上传、单个 / 多个文件获取)和语音操作(语音转文字),所有接口流程统一,仅查找的子服务不同:

  1. 通用步骤① 取出 HTTP 请求正文,进行 ProtoBuf 反序列化;② 根据会话 ID 鉴权,获取并设置用户 ID;③ 查找对应子服务(文件操作找文件子服务,语音操作找语音子服务);④ 调用子服务对应接口处理业务;⑤ 将处理结果响应给客户端。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 5:55:11

Axure RP 11 Mac版汉化终极解决指南:从乱码到完美适配的实战之路

Axure RP 11 Mac版汉化终极解决指南:从乱码到完美适配的实战之路 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure…

作者头像 李华
网站建设 2026/6/24 5:51:06

【仅限首批200名开发者】Dify边缘生产环境部署Checklist(含NVIDIA Jetson Orin Nano实测参数表):错过将延期适配Q4新固件

第一章:Dify边缘部署的适用场景与架构概览Dify边缘部署适用于对数据隐私敏感、网络带宽受限、实时响应要求高或需离线运行的业务场景。典型用例包括工业设备本地智能诊断、医疗影像边缘辅助分析、车载语音助手模型推理、以及偏远地区政务终端的AI问答服务。在这些环…

作者头像 李华
网站建设 2026/6/24 5:57:56

原神效率革命:Snap Hutao全维度解析与实战指南

原神效率革命:Snap Hutao全维度解析与实战指南 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hutao …

作者头像 李华
网站建设 2026/6/25 4:11:35

无损音乐管理与跨平台解决方案:Platinum-MD技术架构与应用实践

无损音乐管理与跨平台解决方案:Platinum-MD技术架构与应用实践 【免费下载链接】platinum-md Minidisc NetMD Conversion and Upload 项目地址: https://gitcode.com/gh_mirrors/pl/platinum-md Platinum-MD作为一款开源解决方案,致力于解决MiniD…

作者头像 李华
网站建设 2026/6/23 15:27:55

基于Coqui STT多语言模型的语音识别效率优化实战

基于Coqui STT多语言模型的语音识别效率优化实战 摘要:针对多语言语音识别场景中模型加载慢、推理效率低下的痛点,本文深入解析Coqui STT多语言模型的核心架构,提供从模型量化、动态批处理到GPU内存优化的全链路解决方案。通过实际代码演示如…

作者头像 李华
网站建设 2026/6/23 15:31:01

技术解析:构建企业级.NET报表引擎的底层架构与实践指南

技术解析:构建企业级.NET报表引擎的底层架构与实践指南 【免费下载链接】FastReport Free Open Source Reporting tool for .NET6/.NET Core/.NET Framework that helps your application generate document-like reports 项目地址: https://gitcode.com/gh_mirro…

作者头像 李华