学习开发基于XMPP协议的即时通讯聊天(开篇)

概述

最近,刚刚学习了郭霖大神讲解的推送原理,心血来潮觉得既然推送可以实现,那么即时聊天本质上和推送原理差不多,那么,为什么不开发一款自己的聊天软件呢?

其实,目前市面上的某些平台(例如BMOB,极光推动,百度推送等)已经完整地集成了推送,甚至集成了聊天功能,只要你按照平台上的文档,注册个ApiKey,嵌入到你的Application中,其实一个聊天软件地雏形就已经出来了。但是这样做完,你会发现,其实到最后就是在调用平台上的文档,而这背后的原理,我们没法知道,这种挺适合敏捷快速开发,但是想要从中学习点什么,那肯定不如自己动手来得实在。

选择

好了,既然是一款聊天软件,本质上就是能完成用户之间的即时通讯,我们可以以此需求为出发点,不断拓展新的需求。要通讯,肯定得需要服务器,而我们又放弃了那些完善的第三方平台,那怎么办呢,此时如果善于搜索也许会搜索到诸如openfire得第三方开源框架,我们摘抄一段百度百科对openfire的说明:

“是开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。 Openfire安装和使用都非常简单”

在实际使用中,只需要按照要求配置好地址和数据库,就搭建完一个服务端了。
但是你会发现一个问题,你又不需要对服务器的进行动手了,因为这个轮子已经够完善了,和第三方平台不同的是,它多了源码,但是你想对它进行改进并完善的难度就非常大。
机缘巧合,GitHub上就又这么一个半成品,既不那么完善,又能作为学习之用,那就是https://github.com/dannytiehui/androidpn

既然是需要即时,那我们就需要定义一个协议来规定服务器与客户端之间的通讯,而XMPP通讯有着易读易懂,可扩展性强的,支持的源码库多等特点,我们就使用它来作为通讯的协议。

开门见山:
我们所预期的需求目前不需要像微信一样复杂,就从最简单的用户之间交流开始,例如下图所示:

聊天.gif
接收消息.gif

图片上东西涉及到消息的发送,消息的接收,以及发送方,接收方,既然有用户那就涉及登陆,注册功能,既然有注册,那就涉及到加密问题。
好了,需求大概就这么多。下一篇我们将讲解xmpp的协议部分,为我们开发做个基础。

你可能感兴趣的:(学习开发基于XMPP协议的即时通讯聊天(开篇))