喧喧技术架构实现方案

2019-04-02 10:49 更新

目标

喧喧即时通信解决方案目标有:


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

方案

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


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

客户端通过 Socket 连接到 XXD 服务器;XXD 服务器负责管理所有已连接的客户端,并且随时将客户端相关信息通过 HTTP 协议汇报给后端服务器;客户端并不直接与后端服务器通信,而且将消息发送给 XXD 服务器,XXD 服务器接收到客户端消息后立即将消息发送给后端服务器;后端服务器如果有消息要推送给客户端需要先发送给 XXD 服务器,然后 XXD 服务器将后端服务器的消息再推送给客户端。在以上三方直接存在 2 中通信协议:


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

通常情况下客户端、后端服务器和 XXD 服务器的关系如下:

一个 XXD 服务器还可以链接到多个后端服务器,这样可以实现集群部署:


技术实现

后端服务器实现

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


XXD 服务器实现

XXD 服务器端采用 Go 语言实现。Go 语言具备高性能、支持高并发、易于学习使用,非常适合来开发中间守护服务器。


XXD 服务器使用到了 go-sqlite3 来实现服务器缓存功能。


客户端实现

客户端推荐采用 HTML/CSS/JS 实现,目前官方桌面客户端基于 Electron 开发。



以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号