news 2026/2/17 4:34:33

即时通讯项目--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/2/16 16:15:59

7个颠覆性技巧:用MOPS实现动态图形创作的创新方法

7个颠覆性技巧:用MOPS实现动态图形创作的创新方法 【免费下载链接】MOPS Motion OPerators for Houdini, a motion graphics toolkit. 项目地址: https://gitcode.com/gh_mirrors/mo/MOPS 动态图形创作领域正经历一场效率革命,MOPS(Mo…

作者头像 李华
网站建设 2026/2/16 11:18:34

智能客服中的自然语言处理实战:如何通过NLP提升客服效率

背景与痛点:传统客服系统的局限性 过去很长一段时间,我们团队维护的工单系统全靠关键词正则规则做应答。用户问“怎么开发票”,规则里没写“开发票”这个同义词,机器人就原地宕机;高峰期并发一上来,人工坐…

作者头像 李华
网站建设 2026/2/7 2:53:10

解决cosyvoice报错no valid model_type!的AI辅助开发实践

解决cosyvoice报错no valid model_type!的AI辅助开发实践 背景与痛点 cosyvoice 是一款轻量级语音合成 SDK,主打“一行代码就能朗读”的体验。但在真实业务里,90% 的首次集成都会卡在一句冰冷的报错: ValueError: no valid model_type!这条…

作者头像 李华
网站建设 2026/2/10 22:58:45

智能部署引擎:企业级装机方案的效率革命

智能部署引擎:企业级装机方案的效率革命 【免费下载链接】ubuntu-autoinstall-generator Generate a fully-automated Ubuntu ISO for unattended installations. 项目地址: https://gitcode.com/gh_mirrors/ub/ubuntu-autoinstall-generator 一、企业部署困…

作者头像 李华