喧喧技术架构实现方案

2019-04-01 09:24:02
薛才杰
3756
最后编辑:先知 于 2020-02-01 14:18:08

一、喧喧技术实现目标

喧喧即时通信解决方案目标:
  • 多平台支持:服务器支持任意系统平台部署,客户端支持在任意平台上使用;
  • 交互体验:实现无延迟的聊天体验;
  • 安全性:保证通信安全性,禁止第三方截获消息;
  • 性能:支持大量用户同时在线使用;
  • 可扩展性:采用通用技术,方便进行二次开发;
  • 集成:易于与已有系统进行集成。

二、喧喧技术实现方案

喧喧即时通信解决方案包含三个部分:

  • 后端处理服务器(XXB):提供聊天数据存储以及供客户端使用的接口,以及喧喧服务器管理界面;
  • 消息中转服务器(XXD):作为中间守护服务器,提供文件上传下载管理、协调客户端与后端服务器通信;
  • 客户端(XXC):提供最终用户使用的交互界面。

客户端(XXC)通过 Socket 连接到 XXD 服务器;XXD 服务器负责管理所有已连接的客户端,并且随时将客户端相关信息通过 HTTP 协议汇报给后端处理服务器(XXB)。

客户端 (XXC)并不直接与后端处理服务器(XXB)通信,而且将消息发送给 XXD 服务器,XXD 服务器接收到客户端消息后立即将消息发送给后端处理服务器(XXB)。

后端处理服务器(XXB)如果有消息要推送给客户端(XXC)需要先发送给 XXD 服务器,然后 XXD 服务器将后端处理服务器(XXB)的消息再推送给客户端(XXC)。

在以上三方直接存在 2 种通信协议:

  • Socket:客户端(XXC)与 XXD 服务器直接使用 Socket 协议连接(文件上传下载除外),可以实现实时通信,将用户聊天过程中的延迟降至最低;
  • HTTP:XXD 服务器与后端处理服务器(XXB)通过 HTTP 协议通信。HTTP 协议具有广泛的支持,并且使用简单,这样用户更容易将喧喧集成到自己的系统中。

通常情况下喧喧客户端(XXC)、后端处理服务器(XXB)和消息中转服务器(XXD)的关系如下:

一个 消息中转服务器(XXD)还可以链接到多个后端处理服务器(XXB),这样可以实现集群部署:

三、喧喧服务端和客户端的技术实现

3.1 后端处理服务器的实现

后端处理服务器(XXB)采用 php + mysql 开发,使用 ZentaoPHP 作为开发框架,非常方便的进行二次开发。

3.2消息中转服务器的实现

消息中转服务器( XXD )采用 Go 语言实现。Go 语言具备高性能、支持高并发、易于学习使用,非常适合来开发中间守护服务器。
消息中转服务器( XXD  使用到了 go-sqlite3 来实现服务器缓存功能。

3.3 客户端的实现

客户端(XXC)推荐采用 HTML/CSS/JS 实现,目前官方桌面客户端基于 Electron 开发。
发表评论
评论通过审核后显示。
咨询电话

公司电话: 400-6689-739

客服电话: 13165050229