xmpp with openfire之一 xmpp and openfire
XMPP
百度百科
1、什么是XMPP ?
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;
核心的XML流传输协议
基于XML流传输的即时通讯扩展应用
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。
XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。
XMPP的扩展协议Jingle使得其支持语音和视频。
2、XMPP的基本网络结构是怎样的?
XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
3、XMPP通过TCP传什么了?
传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传的是XML流。
4、举个例子看看所谓的XML流是什么样子的?
客户端:<?xml version='1.0'?>
<stream:stream
to='example.com'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
version='1.0'>
服务器:<?xml version='1.0'?>
<stream:stream
from='example.com'
id='someid'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
version='1.0'>
...其他通信...
客户端:<message from='juliet@example.com'
to='romeo@example.net'
xml:lang='en'>
客户端: <body>Art thou not Romeo, and a Montague?</body>
客户端:</message>
服务器:<message from='romeo@example.net'
to='juliet@example.com'
xml:lang='en'>
服务器:<body>Neither, fair saint, if either thee dislike.</body>
服务器:</message>
客户端:</stream:stream>
服务器:</stream:stream>
以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起,从<stream>到</stream>构成了一个完整的XML文档。其中的stream标签就是所谓的XML Stream。在<stream>与</stream>中间的那些<message>...</message>这样的XML元素就是所谓的XML Stanza(XML节)。XMPP核心协议通信的基本模式就是先建立一个stream,然后协商一堆安全之类的东西,中间通信过程就是客户端发送XML Stanza,一个接一个的。服务器根据客户端发送的信息以及程序的逻辑,发送XML Stanza给客户端。但是这个过程并不是一问一答的,任何时候都有可能从一个方发信给另外一方。通信的最后阶段是</stream>关闭流,关闭TCP/IP连接。
可以到http://xmpp.org/查询XMPP的介绍和文档
非常不巧的是,当我写这篇BLOG的时候,XMPP中文翻译计划网站http://www.jabbercn.org/正在更新,网站管理员称原有的数据稍后将转入新wiki中。
当前主流操作系统下的XMPP客户端实现有:
Apple MacOS
Adium
iChat
Console
centericq
Fama IM
GNU Freetalk
mcabber
Cross-Platform (Linux/Mac/Windows)
Coccinella
Jabbim
Jeti
Pidgin
Psi
Spark
Tkabber
Linux/Unix
Ayttm
BitlBee
Empathy
Gajim (also Windows)
Gossip
jabber.el
Kopete
Sim-IM
SIP Communicator
Microsoft Windows
Exodus
JAJC
Miranda IM
Pandion
Trillian Pro
Mobile Phone / PDA
Bombus
IM+
imov Messenger
Jabber Mix Client
Lampiro
mChat
OctroTalk
Talkonaut
Vayusphere
Web Browser
Claros Chat
iJab
Jabbear
JWChat
SamePlace
SparkWeb
TrophyIM
http://xmpp.org/software/clients.shtml
xmpp的服务器端实现:
Citadel
CommuniGate Pro
djabberd
ejabberd
IceWarp
iChat Server
in.jabberd
Isode M-Link
jabberd 1.x
jabberd 2.x
Jabber XCP
Jerry Messenger
Openfire
OpenIM
Prosody
psyced
Sun Java System Instant Messaging
Tigase
http://xmpp.org/software/servers.shtml
openfire
openfire是Jive Software的XMPP开源跨平台服务端实现,扩展灵活,插件丰富,有非常好的社区支持,当前版本3.6.2。在以后的文章中,我将逐渐介绍一些openfire的功能及二次开发。
*同时Jive Software还有非常棒的spark客户端实现及smack开发包。
转自http://hetylei.javaeye.com/blog/289854
转载于:https://www.cnblogs.com/jkddg/archive/2008/12/12/1353877.html
xmpp with openfire之一 xmpp and openfire相关推荐
- Android之基于xmpp openfire smack开发之openfire介绍和部署[1]
http://blog.csdn.net/forlong401/article/details/33730365 前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack ...
- openfire html5,XMPP,Smack,Openfire 异常、问题总结
1.Smack 4.2.3,入群时老是报无响应,还未找到缘由(源码问题),已找到缘由,openfire4.2.0+版本自身bug,不支持用户110状态html Exception=org.jiveso ...
- 基于开源 Openfire 聊天服务器 - 开发Openfire 聊天记录插件
上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfire插件.一步步很详细的介绍到简单插件开发,带Servlet的插件的开发.带JS ...
- [Openfire]使用WebSocket建立Openfire的客户端
Openfire 的官网下载最新的Openfire服务端程序啦,Openfire的是开源的,可以免费下载.如图: Openfire 的主程序,主程序是服务端程序,这个主程序不是一个框架,不是一个半成品 ...
- xmpp打开mysql_列表xmpp方法
iOS:XMPP即时聊天知识 XMPP即时聊天框架:XMPPFramework XMPP The Extensible Messaging and Presence Protocol(可扩展通讯和表示 ...
- XMPP协议学习笔记三(Openfire服务器端搭建开发环境)
2019独角兽企业重金招聘Python工程师标准>>> 在了解了XMPP的基本结构和一些概念之后,我们暂时告别枯燥的理论学习,来动手搭建一下Openfire+Spark的开发环境,实 ...
- android开启服务器配置,Android基于XMPP开发(一)【openfire服务器配置】
OpenFire OpenFire 是采用Java开发的基于XMPP(Jabber)协议,开源实时协作(RTC)服务器. Smack 是用 Java编 写的XMPP客户端代码库,是 spark 的核心 ...
- linux重启openfire服务,linux 启动openfire
2. 复制安装包到Linux服务器上,并运行: 如果下载的是RPM: rpm -ivh openfire-3.6.2-1.i386.rpm 默认安装到/opt/openfire目录下: 如 ...
- java xmpp协议_GitHub - zhengzhi530/xmpp: 基于Xmpp协议的即时通讯社交软件(客户端+服务端)...
yyquan 开源一个自己去年写的基于Xmpp协议的即时通讯社交软件 (客户端+服务端) 本项目仅供参考,对于正在学习Xmpp以及javaweb后台的同学,可以看一下. 做这个项目纯属个人兴趣爱好,所 ...
最新文章
- GDCM:gdcm::Tag的测试程序
- Randoop介绍、安装及环境变量配置
- 30 个实例详解 TOP 命令
- OpenCV笔记(十五)——使用Laplace算子进行图像的边缘检测
- python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例
- java自动识别验证码_Java使用OCR技术识别验证码实现自动化登陆方法
- HTML5 创建热点图
- Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法
- LAMP兄弟连打造免费视频教程
- 人脸对齐(六)--ERT算法
- 最新手机号码归属地数据库(2017年4月1日)
- Zabbix全网监控
- 安科瑞 【节能学院】电气火灾监控系统在太焦铁路博爱站房项目的应用
- 分类与预测模型效果评价
- idb的安装log及解决办法
- bzoj 4246: 两个人的星座 计算几何
- Ice飞冰目录结构应用入口工程配置路由配置《四》
- 双端口USB Type-C控制器 CYPD6227 (CYPD6227-96BZXI)
- 分布式之Quorum NWR算法
- 软考知识点---10数据库基础