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开发包。
openfire最新版本下载
http://www.igniterealtime.org/projects/openfire/index.jsp
分享到:
相关推荐
先说一下为什么要写这篇博客,是因为本人在周末在研究XMPP和OpenFire,从网上下载了个Demo,但跑不起来,花了很长时间,经改造后,跑起来了,写个篇博文也是希望后边学习XMPP和OpenFire的同学下载后直接运行,少走...
XMPP(Extensible Messaging and Presence Protocol,可扩展消息与呈现协议)是一种基于XML的即时通讯协议,广泛应用于构建即时通讯系统。Openfire是一款开源的XMPP服务器,以其高效、稳定以及丰富的插件系统而闻名...
本项目采用XMPP(Extensible Messaging and Presence Protocol)协议和Openfire服务器,结合Android客户端,实现了一个功能丰富的多人在线聊天系统。下面将详细介绍XMPP、Openfire以及Android在构建此类系统中的关键...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通讯协议,常用于构建即时通讯系统。它允许用户进行一对一、一对多的消息传输,同时还支持状态呈现、群组聊天等多种功能。XMPP的设计目标是...
基于spring boot框架药品购买系统_a7imn57w.zip
"基于滑模磁链的改进无位置控制技术:减小转矩脉动与抖振,降低电流THD并优化参数依赖",结合滑模和磁链的改进滑模磁链无位置控制,相比于传统的滑模观测器,能有效减小转矩脉动和抖振现象,降低电流THD。 传统的磁链观测器对电气参数非常敏感,改进的磁链观测器将滑模控制率和磁链观测器结合,有效降低了对参数的依赖。 该模型针对特定的小电感电阻电机进行了验证。 ,核心关键词:滑模磁链无位置控制;改进滑模;磁链观测器;传统滑模观测器;电气参数依赖;电流THD;小电感电阻电机验证,好的,根据您提供的关键信息,提炼的标题如下: "结合滑模与磁链技术的改进型无位置控制策略,有效减小抖振与电流THD" 此标题直接体现了该策略结合了滑模和磁链技术,并有效减小了转矩脉动、抖振现象以及电流THD。希望符合您的要求。
红外轮廓提取python代码
# 基于Raspberry Pi 3b的STM原子力显微镜控制系统 ## 项目简介 本项目是一个基于Raspberry Pi 3b的STM(扫描隧道显微镜)控制系统,旨在实现对原子力显微镜的高精度控制和图像采集。通过结合Arduino Uno和ADS1115、AD5764等硬件设备,项目实现了对显微镜的多种操作模式和图像处理功能。 ## 项目的主要特性和功能 1. 信号采集与控制 使用ADS1115进行z轴信号的采集。 通过Arduino Uno控制AD5764,实现对压电驱动器的精确控制。 2. 图像处理 实现3D图像的采集和处理。 3. 操作模式 支持两种操作模式 1. 恒高模式在扫描过程中保持高度恒定。 2. 恒流模式在扫描过程中保持电流恒定。 4. 粗略定位 使用步进电机进行粗略的初始定位。 ## 安装使用步骤 1. 硬件连接
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
2024免费毕业设计成品,包括源码+数据库+往届论文资料 录屏:https://www.bilibili.com/video/BV15S421o7Do 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
【GO】关于一个分布式事务的中间件,目前通信是走的http协议
【爬虫】(天猫,淘宝,京东)爬虫,根据query词爬取数据(Python+Scrapy+MongoDB)_pgj
基于三菱PLC与组态王技术的鸡舍温湿度智能控制系统在养鸡场的应用与优化——No.909解决方案,No.909 基于三菱PLC和组态王鸡舍温湿度控制养鸡场 ,三菱PLC; 温湿度控制; 鸡舍养鸡场; 组态王控制系统; No.909,基于三菱PLC与组态王技术的鸡舍温湿度控制方案
"三菱PLC与触摸屏联合开发气压传动焊条包装线技术详解",No.945 三菱PLC和触摸屏基于气压传动的焊条包装线的研发 ,核心关键词:三菱PLC; 触摸屏; 气压传动; 焊条包装线; 研发; No.945,"三菱PLC与触摸屏在气压传动焊条包装线研发项目No.945中的应用"
# 基于Spring Boot和Spring Integration的微服务购物系统 ## 项目简介 本项目是一个基于Spring Boot和Spring Integration的微服务购物系统,旨在提供一个高效、可扩展的在线购物平台。系统通过微服务架构实现各个功能模块的解耦,包括商品管理、购物车、订单处理、配送服务等。Spring Integration用于实现服务间的消息传递和集成。 ## 项目的主要特性和功能 1. 商品管理 商品的添加、删除和查询。 从京东网站抓取商品信息。 2. 购物车功能 添加商品到购物车。 从购物车中删除商品。 购物车结账生成订单。 3. 订单处理 订单的创建和状态管理。 订单的供应和结账流程。 4. 配送服务 根据订单生成配送信息。 配送状态的管理和查询。 5. 服务注册与发现
基于Omron PLC与MCGS组态的自动化售货机控制系统研究与应用:No.848 实践探索与效果分析,No.848 基于Omron PLC和MCGS组态机控制 ,基于Omron PLC; MCGS组态; 售货机控制; 848号项目,基于Omron PLC与MCGS组态的售货机控制系统研究No.848
参考链接:https://www.bilibili.com/video/BV1ZYNHetEaY/?vd_source=bf2d43514ea61b1121399ab65421e37c 前端:Vue 后端:SpringBoot 数据库:MySQL 有数据库文件,项目完整 1、登录模块 可以登录成功和退出登录。 2、用户管理模块 可以添加、删除、修改、查询用户信息。 3、部门管理模块 可以添加、删除、修改、查询部门信息。 4、出勤管理模块 可以查询和编辑出勤信息。 5、工资管理模块 可以查询和编辑工资信息。 6、奖惩管理模块 可以添加、删除、修改、查询奖惩信息。 7、员工管理模块 可以添加、删除、修改、查询员工信息。
昇腾硬件上面向算子开发场景的编程语言Ascend C的高阶类库ascendc-api-adv-master.zip
"中央空调时间控制启停的优化:西门子1200PLC与TP900触摸屏模拟仿真程序在博途V16环境下的应用与探讨",中央空调改时间控制启停西门子1200PLC和TP900触摸屏模拟仿真程序博途V16 ,中央空调; 时间控制启停; 西门子1200PLC; TP900触摸屏; 模拟仿真程序; 博途V16,"中央空调的定时启停:Siemens 1200PLC与TP900触摸屏模拟仿真程序V16"
内容概要:这份PDF文档系统梳理了Java多线程的核心概念和技术,涵盖了基础知识、锁机制、线程池以及典型应用场景等关键主题。主要内容包括:多线程的基础知识点(并行与并发区分、线程和进程差异及其创建方式)、创建和使用线程的多种方式及其实现;详细讨论了几种常用的并发锁机制(synchronized、AQS、ReentrantLock等);深入介绍了不同类型的线程池及其配置参数的选择依据;探讨了常见的线程控制工具(如Semaphore和CountDownLatch);并讲解了一些高级话题(例如死锁检测与预防、ThreadLocal的作用)及相关的真实面试情景还原。 适用人群:对于具有一定Java编程经验、希望进一步掌握或复习多线程编程技巧的人士而言是非常有用的资料。特别适用于准备求职面试的技术人员。 使用场景及目标:该资料可以帮助开发者理解并发编程的基本原理,熟练运用各类同步原语和容器以构建高效的并发应用程序;此外,文中提供的面试指南有助于应聘者针对可能出现的技术难题做好充分准备。 其他说明:尽管本资料详尽地阐述了许多理论知识,但在实践中还需结合实际情况做出合理的优化决策。 适合人群:具有一定Java基础并且对多线程感兴趣的开发人员,尤其是那些想要深入了解多线程机制并对自己的职业发展有所规划的人。 使用场景及目标:帮助程序员加深对Java多线程编程技术的认知,提升应对复杂任务的能力;同时也是备战工作中可能遇到的各种多线程面试考题的有效参考资料。 阅读建议:此资源适合循序渐进地学习,先从简单的概念入手逐步过渡到较为复杂的主题,对于关键技术和实用的例子可以适当做一些练习加深理解和记忆。