此篇文章为《开发你自己的XMPP IM》的转发,原文章地址:http://phoenixtoday.blogbus.com/logs/17246727.html
最近没在Blog 上露脸,为撒类?应师兄的请求,帮他研究一个XMPP IM 软件的开发。反正最近也没什么大事,每天都想写写代码练练手,就帮忙呗。研究了一通觉得还挺有趣,自己这几天查国内外的资料,发现国内关于这方面间的软件 资料太少了,就想在这里写几篇关于此类IM 软件开发的文章。不过别看东西小,涉及的模块可不少。
所以我基本上分为三篇文章来介绍此类软件的开发:
第一篇是关于XMPP 协议是啥,IM 是啥以及一个比较有名的开源实现,该开源实现包括三个部分(Spark、Smack和Openfire);
第二篇讲如何开发基于Spark 的客户端IM 插件部分;
第三篇讲如何开发基于Openfire 服务器端的插件部分。
好了,进入正题吧。
什么是XMPP?
Extensible Messaging and Presence Protocol,简单的来讲,它就是一个发送接收处理消息的协议,但是这个协议发送的消息,既不是二进制的东东也不是字符串,而是XML。正是因为使用 了XML作为消息传递的中介,Extensible 才谈的上,不是么?嘿嘿。再详尽的东西,我也就不多介绍了,大家可以去百度百科里查看下,链接在这里
什么是IM ?
Instant Messenger,及时通信软件,就是大家使用的QQ、MSN Messenger和Gtalk等等。其中Gtalk 就是基于XMPP 协议的一个实现,其他的则不是。当前IM 几乎作为每个上网者必然使用的工具,在国外的大型企业中有一些企业级的IM应用,但是其商业价值还没完全发挥出来。设想既然XMPP 协议是一个公开的协议,那么每个企业都可以利用它来开发适合本身企业工作,提高自身生产效率的IM;甚至,你还可以在网络游戏中集成这种通信软件,不但让你 可以边游戏边聊天,也可以开发出适合游戏本身的IM 应用,比如说一些游戏关键场景提醒功能,团队语音交流等等都可以基于IM来实现。说了这么多,就是一个意思,其商业价值远远比你想的高!
Spark Smack 和 Openfire
开源界总是有许多有趣的东东,这三个合起来就是一个完整的XMPP IM 实现。包括服务器端——Openfire,客户端——Spark,XMPP 传输协议的实现——Smack(记住,XMPP是一个协议,协议是需要实现的,Smack起到的就是这样的一个作用)。三者都是基于Java 语言的实现,因此对于熟悉Java 的开发者来说不是很难
Spark 提供了客户端一个基本的实现,并提出了一个很好的插件架构,这对于开发者来说不能不说是一个福音。我强烈建议基于插件方式来实现你新增加的功能,而不是去 改它的源代码,这样有利于你项目架构,把原始项目的影响降到最低,文章以后的部分也是基于这种插件体系进行开发的
Openfire 是基于XMPP 协议的IM 的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务 器端是必须要实现的。Openfire 也提供了一些基本功能,但真的很基本的!庆幸的是,它也提供插件的扩展,像Spark 一样,我同样强烈建议使用插件扩展的方式来增加新的功能,而不是修改人家的源代码。
Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能
下图展示了三者之间的关系:
从图上可以了解到,client 端和server端都可以通过插件的方式来进行扩展,smack是二者传递数据的媒介。
嗯,今天就写到这里吧,画图花了好久的时间呀。下一篇介绍一下如何开发基于Spark 的插件程序,并总结一些我自己的一些心得,举一个实际的例子,需要涉及到的一些XML 文件的解析与生成,还有Spark、Smack 自己提供的API ,还有ant 的一些基本知识.
相关推荐
【Java开发 基于Xmpp的IM即时通讯项目】是一个使用Java编程语言构建的实时通信应用程序,它基于XMPP(Extensible Messaging and Presence Protocol)协议。XMPP是一种开放的标准,用于实现即时消息传递和在线状态...
在本文中,我们将深入探讨如何使用XMPP协议在Android平台上实现一个完整的即时通讯(IM)系统,包括客户端和服务器端的实现。XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,广泛用于...
本文将深入探讨基于XMPP(Extensible Messaging and Presence Protocol)协议的IM系统,以及如何在iOS平台上实现一个类似QQ的即时通信功能。 XMPP是一种基于XML的开放标准,最初设计用于即时通讯,但后来扩展到更...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信协议,主要用于即时通讯(IM)和在线状态管理。IMPanda是利用XMPP协议实现的一款客户端应用,它旨在提供基本的消息发送功能,并逐渐...
通过这个Demo,你可以学习到XMPP的基本用法,并以此为基础构建更复杂的IM应用。在实际开发中,你还需要考虑更多细节,如消息的离线存储、群聊支持、文件传输、推送通知等。记住,XMPP协议提供了丰富的扩展机制,可以...
4. **Delphi_XMPP**:这是使用Delphi开发XMPP应用的特定技术领域。开发者可能使用了特定的库或框架,如JabberD2或者XEP-0045(多用户聊天)等,来简化XMPP协议的实现。 5. **资源文档**:这可能包括项目文档、设计...
在iOS平台上开发即时通讯(IM)应用,XMPP(Extensible Messaging and Presence Protocol)是一种广泛使用的开放标准。本文将深入探讨使用XMPPFramework在iPhone上实现XMPP类型的IM时所涉及的关键知识点。 首先,让...
在iOS平台上开发即时通讯(Instant Messaging,简称IM)应用,XMPP(Extensible ...在实际开发过程中,理解XMPP协议的基本概念和`XMPPFramework`的架构,结合苹果的UIKit进行UI设计,可以让你的IM应用更加出色。
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛应用于即时通讯(IM)应用的开发。在iOS平台上,为了实现XMPP功能,开发者通常会使用专门的框架,例如`XMPPFramework`。这个...
"VC IM XM"可能是指使用C++(Visual C++)开发的XMPP即时通讯应用。在开发此类应用时,开发者通常会使用XMPP库,例如Smack或libstrophe,它们提供了API来处理XMPP协议的各种操作。 "XMPP Japper"可能是一个误解,...
通过持续的开发和更新,Smack保持了对最新XMPP标准的支持,并提供了一套完整的API,使得开发者能够快速构建功能丰富的IM应用。 Spark是一个流行的XMPP客户端,它也是基于Smack构建的,展示了Smack在实际应用中的...
资源包括 基于XMPP的多方通信系统研究与实现.pdf 基于XMPP的P2P即时通信系统的研究及实现.kdh ...XMPP协议分析及客户端开发.nh XMPP_3920_最靠谱的中文翻译文档.docx XMPP-RFC3920中文.pdf Android中的XMPP应用.pdf
本篇文章将详细探讨如何利用Delphi 11.3这一强大的开发工具,结合XMPP(Extensible Messaging and Presence Protocol)协议,构建一个跨平台的移动IM客户端。我们将以VKMessengerFMX为例,深入解析源码中的关键技术...
Android平台上,开发XMPP客户端可以借助开源库,如Smack或XMPPTCPConnection。 源代码包含以下关键文件: 1. **COPYING**: 这是关于源代码许可的信息,通常包含GPL、Apache或MIT等开源许可协议的条款,规定了如何...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛用于构建即时通讯(IM)系统。Openfire是基于XMPP标准的服务器端软件,它提供了强大的安全性和可扩展性,使得开发者能够快速...
DrawMe项目正是这样一个利用C#编程语言和XMPP协议实现的IM应用程序。本文将深入探讨DrawMe项目的核心技术和应用场景,帮助读者理解C#与XMPP在即时通讯领域的应用。 首先,让我们来了解C#,这是一种由微软公司开发的...
XMPP(可扩展消息和出席协议)是一种基于XML的开放即时消息传递技术,最初由Jabber开源社区开发,并于2002年成为IETF即时消息与出席(IM)的官方标准。它利用XML元素在任意两个网络端点间近实时地交换结构化信息,并...
在IM开发中,XMPP的优势在于其标准化和灵活性。由于它是基于XML的,所以数据结构清晰,易于解析和处理。此外,XMPP的开放性意味着有丰富的开源工具和库可供选择,开发者可以在多种编程语言中选择合适的工具,如Java...
XMPP(Extensible Messaging and Presence Protocol)是一...这对于理解XMPP协议的工作流程和开发自己的XMPP客户端应用非常有帮助。同时,这也是一个很好的实践案例,展示了如何在C++环境下利用Winsock库进行网络编程。
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准协议,用于即时通信(IM)和在线状态服务。这个“XMPP.zip”文件显然包含了关于如何使用XMPP实现即时通讯,尤其是仿照QQ功能的相关资源...