XMPP

作者: 钎探穗 | 来源:发表于2016-07-14 20:12 被阅读735次

    什么是即时通信?

    • 即时通讯(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发行版,非常容易安装和使用,只需下载、解压缩、启动即可。

    XAMPP1 XAMPP2 XAMPP3 XAMPP4 XAMPP5 XAMPP6
    • Openfire

    Openfire采用Java开发,开源的实时协作(RTC)服务器,基于XMPP(Jabber)协议。其安装和使用都非常简单,利用Web进行管理。单台服务器可支持上万并发用户。

    因为Openfire服务是基于JAVA语言写的,所以电脑必须要有java运行环境。安装JDK成功后进行Openfire的安装。

    Openfire1 Openfire2 Openfire3 Openfire4 Openfire5 Openfire6 Openfire7

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

    Openfire8 Openfire9

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

    Openfire10 Openfire11 Openfire12.png Openfire13 Openfire14 Openfire15 Openfire16 Openfire17 Openfire18 Openfire19 Openfire20 Openfire21
    XMPP客户端环境搭建

    搭建XMPP客户端环境使用spark,辅助调试。XMPP系统的一个设计标准是必须支持简单的客户端。事实上,XMPP系统架构对客户端只有很少的几个限制。一个XMPP客户端必须支持的功能有:

    • 通过TCP套接字与XMPP服务器进行通信

    • 解析组织好的XML信息包

    • 理解消息数据类型

    spark1 spark2

    环境配置结束。

    工程中添加XMPP
    • 创建新工程

    • 导入XMPP框架

    • 引入XMPP需要的依赖库libxml2和libresolv

    • 设置路径/usr/include/libxml2

    导入XMPP 模拟结果.png

    相关文章

      网友评论

      • Mr_墨:xmpp
      • 管饱饱:楼主可否把移动端那一块写详细点 一直没有找到这部分教程
        钎探穗:@管饱饱 实在不好意思,最近一直没时间,https://yunpan.cn/Oc66vwETHEcmIH (提取码:040f),这个链接里有xmppd的,还有环信的,但是有些给的是死值,只是做个例子,有什么问题或建议,欢迎吐槽,因为我也是个初学者,嘿嘿
        管饱饱:@钎探穗 好的,先谢谢了
        笑谈红尘乱离人:@管饱饱 用xmpp也有快一年了,遇到不少问题
      • 孤独感爆棚:补充一下,我的意思是两个手机终端的IM
        钎探穗:@钎探穗 上述只在模拟器上进行简单模拟,给的均是死值
        钎探穗:@孤独感爆棚 在工程的基础上,你是如何测试的,加好友进行聊天得到基础必须是同一个IP下,
      • 孤独感爆棚:楼主写的确实很详细,前面的一圈我都照做没问题,可是后面怎么基于这个服务器展开IM,还不是很清楚啊。
      • 马铃薯蜀黍:这块骨头好难啃~~
        马铃薯蜀黍:@钎探穗 嗯 已经收藏了 有时间得细细研究看看
        钎探穗:@马铃薯蜀黍 确实,一起加油

      本文标题:XMPP

      本文链接:https://www.haomeiwen.com/subject/qqcejttx.html