什么是即时通信?
- 即时通讯(InstantMessaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷,服务提供商也提供了越来越丰富的通讯服务功能。
即时通讯的实现方式?
- 即时通讯有多种实现方式,例如:XMPP、环信、融云等。本文则对XMPP的使用进行介绍。
什么是XMPP?
-
XMPP(XML,Messages,Presence,Protocol)是可扩展通讯和表示协议,基于XML(可扩展标记语言),可用于即时通信(IM)。
-
目前有四种主流IM(即时通讯)协议:XMPP(可扩展通讯和表示协议)、IMPP(即时信息和空间协议)、PPIM(空间和即时信息协议)、SIMPLE(针对即时通讯和空间平衡扩充的进程开始协议)。在这四种协议中,最灵活的就是XMPP,它是基于XML协议的,继承了在XML环境中灵活的发展性,因此,基于XMPP的应用程序具有超强的可扩展性。
XMPP优点:
-
开放:XMPP协议是由JSF开源社区组织开发的,不属于任何的机构和个人,所以XMPP是自由、开放、公开的,而且易于了解。在客户端、服务器、组件、源码库等方面,都有了多种实现。
-
标准:互联网工程工作组将XMPP于2002年正式列为认可的实时通讯及Presence技术。
-
分布式的网络架构:XMPP协议虽然是Client/Server的通讯模式,但是XMPP协议本身并没有这样的限制。而分布式网络是由分布在不同地点且具有多个终端的节点机互连而成,网络中的任意一点均至少与两条线路相连,当任意一条线路发生故障,通信还可经其他链路完成,具有较高的可靠性,同时网络易于扩充。XMPP网络架构和电子邮件十分相似,其核心协议通信方式是先创建一个Stream,然后以TCP传递XML数据流,没有中央服务器,任何人都可以运行自己的XMPP服务器,使个人或组织能够掌握他们的实时通讯体验。
-
良好的扩展性:基于XML建立起来的应用具有良好的语义完整性和扩展性。
-
应用广泛:XMPP除了可用在即时通信的应用程序,还能用在网络管理、内容供稿、协同工具、档案共享、游戏、远端系统监控等。
-
安全性:XMPP在Client-to-Server通信和Server-to-Client通信中都使用TLS(Transport Layer Security)协议作为通信通道的加密方法,保证通信的安全。
XMPP实现即时通讯
实现即时通讯至少需要一个服务器端、两个客户端。下面我们准备需要的环境:XMPP服务器、XMPP客户端(辅助调试)
XMPP环境搭建
搭建XMPP环境需要几个辅助工具:
- XAMPP
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的XAMPP软件站集成软件包,是一个易于安装且包含MySQL、PHP和Perl的Apache发行版,非常容易安装和使用,只需下载、解压缩、启动即可。






- Openfire
Openfire采用Java开发,开源的实时协作(RTC)服务器,基于XMPP(Jabber)协议。其安装和使用都非常简单,利用Web进行管理。单台服务器可支持上万并发用户。
因为Openfire服务是基于JAVA语言写的,所以电脑必须要有java运行环境。安装JDK成功后进行Openfire的安装。







此时需要创建数据库以供使用:


创建数据库结束,需要导入表,此时要去openfire文件夹中获取需要的文件,位置如下:












XMPP客户端环境搭建
搭建XMPP客户端环境使用spark,辅助调试。XMPP系统的一个设计标准是必须支持简单的客户端。事实上,XMPP系统架构对客户端只有很少的几个限制。一个XMPP客户端必须支持的功能有:
-
通过TCP套接字与XMPP服务器进行通信
-
解析组织好的XML信息包
-
理解消息数据类型


环境配置结束。
工程中添加XMPP
-
创建新工程
-
导入XMPP框架
-
引入XMPP需要的依赖库libxml2和libresolv
-
设置路径/usr/include/libxml2


网友评论