开源Jabber(XMPP) IM服务器介绍

基于QT的IM(jabber)库和客户端 本文来自http://blog.youkuaiyun.com/cymlife 原创,引用必须注明出处! 基于QT的IM(jabber)库和客户端 这段时间一直在研究跨平台的IM(jabber)客户端,经过大量的下载、编译、测试、评估,作此记录。使用QT作为表现层,源于QT提供了丰富的控件,以及强大的跨平台能力。jabber是一个基于XMPP协议的IM应用,解决了做什么和怎么做的问题。使用QT来开发的j 阅读详情

一.摘要

这是我粗略读了一遍Jabber协议和相关技术文章后的产物,有些地方不一定准确。在文章中引用的一些代码来自 www.jabber.org上的文章。

二.  什么是Jabber
       Jabber就像ICQ,MSN一样,是一个基于Internet的即时通讯系统,但是同这些即时通讯软件不同的是,它是一个开放的即时通讯系统,也是一 个基于XML Stream 的协议,用于在Internet上的两个实体之间交换信息,现场状态(presence)和其他的结构化信息。你可以自己架设自己的Jabber服务器, 使用不同的Jabber Client 软件,而不象ICQ或MSN一样,依赖于AIM或MSN的服务器和软件。
  第一个Jabber技术在 1998由Jeremie Miller 开发,到目前为止,Internet上已经有数以万计的Jabber服务器和数以百万的Jabber用户。IETF已经将Jabber定为即时通讯和现场 技术的标准协议,称为XMPP(Extensible Messaging and Presence Protocol),相关的规范是RFC3920和RFC3921,并且,JSF(Jabber Software Foundations)也在它的JEP中制定了更多扩展协议(例如GroupChat和文件传输等),这些扩展协议目前还没有成为标准,但是将来有成为 标准的可能。
  作为一个标准协议,目前有大量的基于各种语言,各种平台,和各种 license (商业,GPL, Apache )和Open Source的Jabber服务器和Client端被开发出来,同时还有大量的Library,在这些Library的基础上,大家可以自己开发自己的 Jabber应用。
       更多的信息,请看 www.jabber.org
三.  Jabber的使用
       Jabber使用同其他的即时通讯软件差不多,你根据你的平台,下载一个Jabber的Client (例如windows 下的Exodus, linux下的Gabber, PSI等),在Internet上寻找一个Jabber服务器(例如Jabber.cn),注册一个帐号,然后再通讯列表 中加入你的好友,就可以开始聊天了。你也可以自己架设一个自己的Jabber服务器,这需要先下载相应的Jabber服务器软件(例如Jive, Jabberd等),安装配置后,把这个服务器的地址告诉你的朋友,你们就可以拥有一个自己的即时通讯服务器了。
  Jabber可以实现不同即时通讯软件之间互联互通。例如,通过一个Jabber Client,你可以用你的MSN或ICQ帐号,通过Jabber网关登陆到MSN或ICQ 服务器上,和你的MSN和ICQ好友进行通讯。
       在实时通讯的功能上,Jabber同其他的即时通讯软件没有什么太大的不同,普通的即时通讯;群组聊天,好友列表的分类,上线提醒等,这些功能随着具体Jabber Client软件的不同而略有不同,但大体上都是差不多的。
四.  Jabber的架构
       Jabber从结构上来,更类似于一个邮件服务器,它是分布式的,也就是说,并不象其他即时通讯软件那样,所有的即时通讯用户都连接到同一个服务器上,而是象邮件服务器那样,不同的用户连接到自己的服务器上,在服务器之间通过一个标准协议来交换信息
一个实体在Jabber网络上被称为一个接点,它有唯一的标识,被称为JID,统称用来表示一个Jabber用户,但是也可以表示其他内容,例如一个聊天室。它的格式是 node@domain/resource,  node@domain有点类似电子邮件的地址格式,resource用来表示node不同的设备或位置,这个是可选的,例如我在Server1上注册了一个用户,用户名为doom,那么我的JID就是 doom@server1, 在发送消息时,指明 doom@server1就可以了,resource可以不用指定,但我在登录到这个Server时,我的JID可能是 doom@server1/exodus(如果我用Exodus软件登录),也可能是 doom@server1/psi(如果我用psi登录)
   Jabber是一个典型的C/S 架构,而不是象大多数即时通讯软件一样,使用P2P的架构,也就是说在大多数情况下,在两个Client进行通讯时,他们的消息都是通过Server传递 的(也有例外,例如在两个Client传输文件时)。采用这种架构,是为了简化Client端,将大多数工作放在Server段进行,这样,Client 端的工作就比较简单,而且,当增加功能时,多数是在Server端进行。
  Jabber是一套基于XML Stream的协议,当一个Jabber Client连接到一个Jabber Server上时,Client建立了一个从Client到Server的XML流,Server也同时建立了一个从XML到Server的XML流,这 个流看起来像这个样子:
     |--------------------|
     |                      |
     |--------------------|
     |                  |
     |                        |
     |                |
     |--------------------|
     | |
     |              |
     |          |
     |--------------------|
     |          |
     |              |
     |                    |
     |--------------------|
     | ...                         |
     |--------------------|
     |            | 所有的信息都是以XML格式加入到这个流中(这些信息被称为stanzas),例如如下的消息:
  from='juliet@capulet.com'  to='romeo@montague.net'>
     Wherefore art thou, Romeo?
 
       因为是XML格式的数据,用户可以自己对数据进行扩充,加入自己的基于XML的私有数据。
五.  XMPP协议简单介绍
   XMPP在2004年10 月被IETF认定为标准协议,它包括RFCS 3920和RFCS 3921,其中,3920被称为Extensible Messaging and Presence Protocol (XMPP): Core,描述了Jabber 中XML Stream的核心技术,包括安全和国际化的一些技术; 3921被称为Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence,主要是基于即时通讯的一些技术,例如通讯列表,黑名单等。
IETF还制定了两个扩展协议,3922,被称为Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM);3923,被称为 End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)。
同时,JSF还制定了一系列有关Jabber的扩展协议,称为JEPS(Jabber Enhancement Proposals) ,用来制定一些Jabber的扩展功能,这些协议虽然还没有称为XMPP的一部分,但估计也是迟早的事情。
以下是XMPP中的一些需要特殊说明概念:
Message:Stream的一个子元素,,用来表示传输的消息,有一些相关属性,例如to, from, type等,来表明发送方或接受方,它可以包括一些子元素,例如,等,当用户发送一条信息时,就会在流的上下文中插入一个Message元素,中间有相关的信息。
Gateway: 用于把XMPP协议转化为非XMPP协议,或将非XMPP协议转化为XMPP协议,应用于Jabber同其他IM的通讯,或是其他系统,例如Email
Presence: Stream的一个子元素, 用来表明用户的状态,如在线,离线等,当用户离线或改变自己的状态时,就会在stream的上下文中插入一个Presence元素,来表明自身的状态。
I/Q: Info/Query Stream的一个子元素,,一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行相应。例如,client在stream的上下文 中插入一个元素,向Server请求得到自己的好友列表,Server返回一个,里面是请求的结果。
Subscriptions: 订阅机制,用来保证用户可以管理订阅指定用户的Presence
TLS/SASL: Jabber的安全认证机制(这部分我没有太看懂,大意是,在Client和Server,Server和Server进行通讯前,必须有一套安全机制进行认证,在经过认证后,才能进行通讯 TLS和SASL就是基于认证的两种技术)
六.  Jabber的发展趋势
       我个人觉得,由于MSN,QQ,ICQ经过多年发展,已经拥有庞大的消费级终端用户群,对这些用户来说,Jabber高举开放协议的大旗在这方面并没有多 少优势而言。同时在这些即时通讯软件所上的附加功能越来越多(例如语音,视频,游戏等),Jabber在这方面功能较弱。但是,我觉的在企业即时通讯和应 用领域,可能会有比较大的作为。目前的商业的Jabber软件,针对的都是企业即时通讯服务。
       由于Jabber是基于XML的流传输协议,它更适合与传输结构化的信息,这样,在企业的应用领域,会有比较大的发展前途,比较典型的就是,Jabber 已经作为COE(公共操作环境)的一部分,在美军的FBS(Future Combat Systems)系统中提供服务,用于提供Chat服务和接受来自传感器的战场信息,使得实时信息可以单兵作战平台,传感器和其他资源间传送。
       同时,由于Jabber跨平台的特性,已经出现了支持Jabber的IP电话和手持设备;有报道说,已经有公司在Jabber的基础上开发订阅/分发平台。
       正如Jabber 的创始人Jeremie Miller所希望的,Jabber将来可能更加用于实时的XML数据传输上,而不是仅仅作为一个即时通讯的平台。

七.常用开源Jabber
1. Openfire (Wildfire) 3.x
授权: GPL or 商用
操作系统平台:所有(使用Java开发)
XMPP Jabber 协议实现情况:98%
Tim 评价:
安装和使用非常简单,安装后进入Web界面进行2~3分钟的配置所有的东西都设好了。使用Java语言开发,在目前Java开发人员到处普及的情况下进行 维护和扩展的成本非常低。在我的测试中加上 Connection Manager 的情况下单台服务器可支持 30 万并发用户。缺点是目前还不支持cluster。如果企业内部部署IM使用 Wildfire + Spark 是最佳的组合。


2. ejabberd
授权: GPL
操作系统平台:Linux, Windows, MacOS X 等
XMPP Jabber 协议实现情况:91%
Tim 评价:
Ejabberd目前是可扩展性最好的一种Jabber/XMPP服务器,支持分布多个服务器,并且具有容错处理,单台服务器失效不影响整个cluster运作。
顾虑就是它采用一种大家都没听过的语言Erlang开发,所以很多人可能会象我一样因为这个原因放弃了它。

3. Jabberd 2.x
授权: GPL
操作系统平台:主要是 Linux, (Windows 也支持,但不知道性能怎样)
XMPP Jabber 协议实现情况:76%
Tim 评价:
自从jabber.org改用ejabberd之后,Jabberd一直都在走下坡路。扩展性比不上ejabberd, 易用性比不上 Wildfire,唯一的优势是使用C开发,如果你坚持要用C开发,那么还是选择jabberd吧。

4. Jabberd 1.x
授权: GPL
操作系统平台:主要是 Linux, (Windows 也支持,但不知道性能怎样)
XMPP Jabber 协议实现情况:45%
Tim 评价:
在几年前 jabberd 就是 Jabber 的代名词,至今很多 Jabber 文档仍然介绍的是 Jabber 1.4,
在我以前写的《Jabber 服务器占有率比较》中仍然排名第一。但是它很多新的规范都不支持,相信大部分用户都将转向新的服务器。


5. 后起之秀 DJabberd
授权: open source
操作系统平台:主要是 Linux, (Perl写的,其他平台应该也支持)
XMPP Jabber 协议实现情况:N/A
Tim 评价:
djabberd 使用 epoll 技术,理论上单台服务器可以支持更多用户。Djabberd目前主要应用在LiveJournal上,大部分XMPP协议都支持,稳定性也不用置疑。但是因为推出时间尚短,很多细节功能可能需要时间慢慢完善。

 

野花服务器 野花服务器是提供计算服务的设备。1、服务器是一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器,数据库服务器和应用程序服务器。服务器通常以网络作为介质,既可以通过局域网对内提供服务,也可以通过广域网对外提供服务。 2、野花服务器由于服务器需要响应服务请求,并进行处理,因此一般来说服务器具备承担服务并且保障服务的能力。 常用开源Jabber(XMPP) IM服务器介绍 阅读详情

相关推荐

ICDAR数据集简介

ICDAR(文档分析与识别国际会议)是OCR领域的权威会议,每两年发布一次数据集,专注于‌自然场景文本检测与识别‌,涵盖多语言、复杂版式和真实环境挑战。街景、广告牌、票据、手写文档等真实场景图像。包含水平、垂直、倾斜、弯曲文本,背景干扰大,部分文本存在遮挡或模糊。提供文本位置坐标(矩形/四边形框)及内容,无法识别的文本标记为###。以上总结提炼了ICDAR的核心价值与应用方法论。给出最佳实践方法是官网数据预训练模型 + 业务数据微调(比如用PPOCRLabel标注100+张业务图)。

xinghaitao2005的博客 1117

常用开源Jabber(XMPP) IM服务器介绍

<br />转自:http://www.kfdoc.com/Article/kaifayuyan/Java/200909/283.html<br /> <br />1. Openfire (Wildfire) 3.x<br />授权: GPL or 商用<br />操作系统平台:所有(使用Java开发)<br />XMPP Jabber 协议实现情况:98%<br />Tim 评价:<br />安装和使用非常简单,安装后进入Web界面进行2~3分钟的配置所有的东西都设好了。使用Java语言开发,在目前Jav

懒人的技术笔记 8001

银行卡密码键盘 SM4 ECB模式+ANSI X9.8 格式标准(带主账号信息)PIN 加解密示例

文章目录1.软加解密示例2.知识点①ANSI X9.8 格式标准②主密钥,工作密钥加解密基本概念:加密种类:3.密码键盘操作4.工具 1.软加解密示例 ————————————————————————————————————————————------ 已知数据: 银行测试主密钥TMK: 1234567890ABCDEFABCDEF0987654321 通过签到接口得到: 工作密钥密文KeyVal...

老孟嘚吧嘚 6651

基于JABBER的IM通讯

1.JABBER的协议模型      XMPP      |      SASL      |     TSL      |     TCP 2.JABBER的通讯模型                    SERVER S1  --------  SERVER S2               /            /                    |              / 

小毅的书屋 3175

【LLM】ms-Swift框架下SFT与GRPO协同优化的高效训练策略

本文深入探讨了ms-Swift框架下监督微调(SFT)与群组相对策略优化(GRPO)的协同训练策略,提升大型语言模型(LLM)的性能与效率。通过创新的架构设计和两阶段训练流程,结合GRPO的群组奖励估计与动态基线调整技术,显著优化了数学推理等任务的准确率。文章还分享了计算资源高效利用和参数调优的实战经验,为LLM训练提供了实用指导。

green的博客 994

深入剖析:功率放大电路设计精髓——从理论到实践

输入信号首先被调制(通常是PWM脉宽调制)成高频开关信号,驱动功率开关管(MOSFET),再通过LC低通滤波器滤除高频分量,还原出放大的音频信号。在靠近功放板电源引脚处放置足够容量的电解电容(如100uF - 1000uF)和高频瓷片电容(如0.1uF)并联进行电源去耦,抑制低频和高频干扰,防止低频振荡(Motorboating)和高频自激。,堪称电子世界里的“能量转换器”。当输入信号在零附近(即两个器件切换导通的区域)时,由于器件的开启电压(Vbe或Vgs)不为零,输出波形会出现明显的衔接不流畅的失真。

Zihan2558的博客 1693

常用xmpp server 介绍

本文来源 http://hi.baidu.com/jabber http://hi.baidu.com/jabber/blog/item/a2128d350698d71190ef39d2.html 1. Openfire (Wildfire) 3.x 授权: GPL or 商用 操作系统平台:所有(使用Java开发) XMPP Jabber 协议实现情况:98%

RTC hacker 2836

从机械到数字:EC11旋转编码器与ESP32的PWM控制艺术

本文详细解析了EC11旋转编码器与ESP32的PWM控制技术,探讨了如何将机械旋转动作转换为精确的数字信号控制。通过硬件连接、信号处理和软件优化等实践技巧,开发者可以构建高效的人机交互系统,适用于智能照明、电机控制等多种应用场景。

android的专栏 782

XMPP常用开源服务器介绍

常用开源Jabber(XMPP) IM服务器介绍 1. Openfire (Wildfire) 3.x 授权: GPL or 商用 操作系统平台:所有(使用Java开发) XMPP Jabber 协议实现情况:98% Tim 评价: 安装和使用非常简单,安装后进入Web界面进行2~3分钟的配置所有的东西都设好了。使用Java语言开发,在目前Java开发人员到处普及的情况下进行维护和

jieshaowang1229的专栏 2628

stm32cubeMX使用HAL库点亮LED流水灯

目录

weixin_46129506的博客 3797

Vue3 - 强力解决前端下载二进制流pdf文件、下载成功后打开空白问题解决,或者获取PDF文件流,将blob对象转换成下载链接打开后一片空白(无论是否使用pdf插件下载,还是原生方法下载都完美解决)

vue3前端下载二进制流pdf文件,下载成功,打开空白问题解决,js下载PDF文件流,打开空白问题,VUE3 h5中的文件流下载和指定的url下载总结(解决下载后的pdf打开空白情况)pdfjs打开文件流空白,解决pdf文件流,预览全是空白页,pdf文件流,下载正常,但是预览全是空白页,前端JS获取PDF文件流,将blob对象转换成下载链接打开后一篇空白的问题,前端文件流下载后文件空白,前端下载文件流PDF文件显示空白 或 无法打开,在线预览PDF文件打不开白屏怎么办,前端axios请求二进制数据流转换生成

🏆 前端领域优质创作者 4617

常用开源Jabber(XMPP) IM服务器介绍(转)

1. Openfire (Wildfire) 3.x授权: GPL or 商用操作系统平台:所有(使用Java开发)XMPP Jabber 协议实现情况:98%Tim 评价:安装和使用非常简单,安装后进入Web界面进行2~3分钟的配置所有的东西都设好了。使用Java语言开发,在目前Java开发人员到处普及的情况下进行 维护和扩展的成本非常低。在我的测试中加上 Connection Man...

weixin_30484247的博客 206

华为OD机考双机位C卷 - 员工派遣 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 员工派遣 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1033

XMPP即时通信资源

1 Jabber http://www.linuxsir.org/...

weixin_33795093的博客 191

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WEB-IM的构建

在[url=http://ldjsyl.iteye.com/blog/82187]基于WEB的IM[/url]一文中,我简单说了下web im的构想,现在介绍一下web im的搭建。简单介绍一下:openfire是一款基于XMPP协议的一款即时通信开源的服务器端软件,XMPP协议也是容纳各种协议的一种通信协议,总之 ,XMPP协议可说是一种&ldquo;开放式协议&rdquo;,允许客户端使用各种...

ldjsyl的专栏 171

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 绩效管理
下一篇: XMPP/Jingle Vs SIP/SIMPLE 的简单介绍
bamboolsu
博客等级 码龄22年 200粉丝 394原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值