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后台的同学,可以看一下. 做这个项目纯属个人兴趣爱好,所 ...
最新文章
- CentOS 7(64位)系统中安装AutoDockTools(MGLTools)
- 从谷歌的招聘中,我们学到了什么?
- 数据中心机房环境温度与微模块机柜有什么关系?
- php开发ftp服务器搭建教程,在Linux中搭建一个FTP服务器
- asp mysql添加数据_ASP:ado.net 实例向数据库添加数据。
- lc filter在matlab哪,基于python实现matlab filter函数过程详解
- 操作系统 第四章 文件管理
- 下载量超1600万的热门开源 JavaScript 序列化包中被曝 RCE 漏洞
- 博思得标签打印机驱动_惠普LaserJet 5200n驱动-惠普HP LaserJet 5200n打印机驱动下载 v61.074.561.43官方版...
- Android 中文 API——android.widget合集(中)(50篇)(chm格式)
- 游戏服务器当中的唯一名设计方法
- seafile看不见repo报500错误的解决方法
- linux qt读取显示图片,Linux下使用QT调用opencv读取摄像头视频 调试心得
- android 蒙版图片带拖动_「ps|pr」大概ps的剪切蒙版和pr的轨道遮罩键是兄弟吧
- Visio实现箭头反向
- 所有男生女生看了都会感动的分手理由(天堂杂志转贴)
- C# 連接mysql,連接后顯示多個線程池
- java 混淆_Java 混淆那些事(一):重新认识 ProGuard
- Qt-使用QString输出数字上标(不要再用x2或x^2表示平方啦)
- Fetion(飞信) 2010版本协议分析
热门文章
- 转赋值表达式解析的流程
- 《中国人工智能学会通讯》——2.2 智能汽车人机交互与人机协同技术
- scalikejdbc 学习笔记(4)
- 统计分析SQL Server Profiler 跟踪的SQL
- 程序员面试题100题第29题——调整数组顺序使奇数位于偶数前面
- 更改Linux用户的登录shell环境
- 控制反转容器依赖注入模式(转)
- 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler...
- ajax实现php验证码验证码,PHP验证码之Ajax验证实现方法_PHP教程
- java格式化星期_在Java中使用SimpleDateFormat格式化星期几