IM即时通讯开发前后端架构(第一版)

作为一个IM入门菜鸟,在看了两周的入门文章贴(http://www.52im.net/thread-464-1-1.html)后,终于开始考虑开发相关的事情了。

第一步是画一个简单的前后端交互的架构图。结合网上的相关文章,自己给出了一个粗略的架构图。这张架构图只包含大颗粒度的业务,只能说明粗略的架构思路,不包含任何技术细节。

在实际开发中,每个模块的技术架构、流程需要单独去思考、设计、处理,也会在后面的文章中给出。

我的粗略架构图下图:


IM即时通讯前后端架构图

这张图,“客户端”是所有流程的开始。

可能大家对这张30分钟出来的图不太理解(其实是我画的太抽象),我来解释下我的思路。

首先,对于一个客户端(此处仅先考虑APP,暂不考虑web)用户来说,有两种状态:登录和未登录。不管处于这两种中哪种状态,都应该保持与服务器的长连接。因为对于一个用户来说,不管是否登录都需要接受系统推送的消息。

所以用户与服务器的连接的关系有两种:

1、短连接:用于业务接口,比如登录、登出、上传、下载之类的;

2、长连接:用户保持与服务端的连接,获得推送、实时消息等等;

基于这个前提,就有了上面的图。

举个例子,比如单点聊天中发送图片,A发送图片给B。

那么A准备发送的图片将会通过HTTP协议上传到服务器,上传成功后,服务器生成一个SOCKET的数据报文,准备通知A和B。

这个数据报文就是通过长连接推送过去的。

A收到报文,只要更新UI状态就好。

B收到报文,会根据报文解析后的图片URL去请求图片信息,通过HTTP协议下载到本地。

这样一次通信完成。

其他类似的业务接口以此类推。

接下来就要进行服务端的开发框架和语言选型。

参考资料:

http://www.68idc.cn/help/jiabenmake/qita/2014051696081.html



你可能感兴趣的:(IM即时通讯开发前后端架构(第一版))