演讲的主题是XMPP:一种模块化协议。演讲内容主要包括XMPP协议的核心和扩展两方面内容。 Winfried首先分别介绍了XMPP的核心协议和扩展协议的特点。...核心协议饰演了XMPP的一些基本功能,由IETF和IANA负责伟华,并且在RFC’s上发布。...XMPP协议的扩展部分也被称为XEPs,是我们可以根据自主的需求添加到核心协议上的,并且不对隐私性有任何的限制。...Winfried接着介绍了XMPP的框架结构,并介绍了XMPP标准制定的核心组织:XSF(XMPP Standards Foundation),并对XSF指定标准的流程进行了一个简单的介绍。
而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。 1、什么是XMPP ?...2、XMPP的基本网络结构是怎样的 XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。...基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。 3、XMPP通过TCP传输什么 传输的是与即时通讯相关的指令。... 服务器: 客户端: 服务器: 以文档的观点来看,客户端或服务器发送的所有XML文本连缀在一起...如此一来,任何IM供应商在遵循XMPP协议的前提下,都可以随时与Google Talk实现免费连接. 5、XMPP系统特点 (1) 客户机/服务器通信模式 (2) 分布式网络 (3) 简单的客户端 (
/streams,或回叫命名空间名不只是"jabber:server:dialback"(参考XML命名空间名与前缀(11.2)) 12)--实体通过流向执行验证的服务器发送了无效的...XML(参考验证(11.3))。 ...23)由初始实体在流头提供的版本属性值指定了一个不被服务器支持的XMPP版本;服务器可能在元素中指定它支持的版本。 ...特殊应用元素应当补充或进一步验证一个已定义元素。...7) 初始实体必须验证由接收实体表示的证书;参考证书验证(14.2)相关证书验证步骤。
当服务器收到一个在由'jabber:client'命名空间认证的已授权流的上下文中的XML节,它必须做以下事件之一: 1) 验证客户端提供的‘from’属性值就是用于联合实体的已连接资源的值。...参考处理XML节(10节)的服务器规则,用于通用路由与相关 XML节的传送规则,并且用于即时消息与出席应用的出席-特定规则[XMPP-IM]。...如果服务器收到一个无‘to’属性的出席节,服务器应当广播它到被订阅到发送实体的出席实体,如果可利用的话(用于定义在[XMPP-IP]即时消息与表示应用的出席广播的语义。)...11.3 确认(验证) 除了'jabber:server'命名空间中节的相关‘to’与‘from’地址,服务器不为转发到客户端或另一个服务器的XML元素负责;一个实现可能选择提供仅有的认证数据元素...XML流与节的验证是可选的,包含在此的方案仅用于描述目的。 11.4 包含文本声明 实现应当在发送流头之前发送文本声明。应用必须遵循文本声明包含在内的相关环境的[XML]中的规则。
描述 openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据存储可以采用多种数据库,如MySQL,Oracle等。...实际问题是这样的:首先启动openfire服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等。...如果不重启服务器,你永远不会觉得有什么不对的地方,因为所有的中文显示都是正常的。接下来重启一下openfire,再用建立的帐号登录客户端或进入后台管理端查看,会发现所有的中文全都变成了问号。...default character set utf8 default collate utf8_general_ci; 连接字符串设置 其次,在初始化openfire数据库,即第一次配置openfire服务器时
服务器回叫并不是一个安全机制,并且仅导致服务器身份弱验证(参考服务器到服务器的通信(14.4)相关方法的安全特性)。域需要健壮的安全性,应当使用TLS与SASL;参考服务器到服务器通信(4.4)细节。...服务器回叫是单向的,导致一个方向上一个流身份的(弱)验证。因为服务器回叫不是一个认证机制,通过回叫是不可能进行双向认证的。...产生与验证密钥的方法用于服务器回叫,必须考虑被用的主机名,由接收服务器产生的流ID,和由授权服务器的网络秘密知道。...根据这些信息,还有授权服务器网络中的共享密钥信息,密钥被验证。任何验证方法可能用于产生密钥。...前述结果是接收服务器已经认证了源服务器的身份,为了节通过“初始流”(如,从源服务器到接收服务器的流)的XML能被源服务器发送与接收服务器能接收,为了验证使用“响应流”(如,从接收服务器到源服务器)实体的身份
tcp和udp两种形式 常见的术语 xmpp:基于xml的可拓展协议. jabber:xmpp的前身. openfire:支持xmpp的开源服务器 smack.jar:对xmpp协议封装.方便开发的jar...今日的互联网上有数以万计的XMPP服务器运作着,并有数以百万计的人们使用XMPP实时传讯软件。...分散式: XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。 ...任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。...安全: 任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。
其中,客户端利用XMPP访问基于[TCP]连接的一个服务器,并且,服务器间也通过TCP连接进行彼此间的通信。 ...=FC1 符号表示如下: 1) C1,C2,C3 = XMPP客户端 2) S1,S2 = XMPP服务器 3) G1 = 网关:在XMPP与外部协议(非XMPP)的消息网络间转换。...大多数与XMPP兼容的服务器设想有能力存储客户端的数据(例:基于XMPP即时消息与出席应用的用户的联系列表);在这种情况下,XML数据由服务器自身代表客户端直接处理,并不路由到其它实体。...2.3 客户端 大多数客户端通过[TCP]连接直接连到服务器,并且使用XMPP,充分利用由服务器及任何相关服务所提供的功能。...2.4 网关 网关是服务器端的一种特殊服务,它的主要功能是将XMPP翻译成外部消息系统所使用的协议(非XMPP),也可将数据翻译回XMPP。
,分为tcp和udp两种形式 常见的术语 xmpp:基于xml的可拓展协议. jabber:xmpp的前身. openfire:支持xmpp的开源服务器 smack.jar:对xmpp协议封装.方便开发的...今日的互联网上有数以万计的XMPP服务器运作着,并有数以百万计的人们使用XMPP实时传讯软件。...分散式: XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个stream,XMPP以TCP传递XML数据流,没有中央主服务器。...任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。...安全: 任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。
我说的是实体,因为这种聊天和信息交换可能涉及两个人,也可能是两个服务器/软件之间的对话。 XMPP利用了TCP。我们可以说XMPP是一个使用TCP作为底层L4协议的L7协议(就像HTTP)。...通常情况下,XMPP遵循客户端-服务器的交互方式(即使p2p也是可能的)。客户端和服务器发送/接收所谓的XMPP节段(stanzas)——节段有不同的用于客户端和服务器的类型。...下图总结了目前为止所看到的概念: 比如我们有两个客户(Ivano和Carmela)访问一台服务器(infohub)。服务器上有两个资源(金融和体育)。如前所述,可以将资源看作是聊天室/主题/频道。...控制节点作为XMPP服务器,而计算节点作为客户端。 XMPP带来了什么样的信息?大多数时候,我们说XMPP取代BGP进行控制节点-计算节点通信,说明它是用来携带路由信息的。这是事实,但不完全正确。...使用IQ是很聪明的,因为它需要确认信息;这样Tungsten Fabric可以“验证”计算节点是否真的收到了信息,并且它也避免了计算节点收到路由数据,但没有足够的底层配置对象来使用这些数据的情况。
; ///入口 func connect() -> Bool { log.info("连接IM服务器") setupStream();...disconnect() } //登录 func login(){ do { log.info("服务器:\(self.xmppStream...-----// //连接成功调用 func xmppStreamDidConnect(_ sender: XMPPStream) { logger.info("连接IM服务器成功...{ logger.info("连接IM服务器超时") } //登录失败调用 func xmppStream(_ sender: XMPPStream!...ZJ_Xmpp.stringValue(message.attribute(forName: "receiverPic")); let msgtype = ZJ_Xmpp.stringValue
今天,我和同学一起开发一个软件的时候,想弄一个xmpp开源服务器来实现我们软件的通讯聊天,但是由于网上教程的不够详细和大部分教程都是转账同一个博客的博文,这样对于我们一些学习者来说就会导致出现很多的错误而又要花大量的时间来...这样的结果令人很烦,我就是这样,所以,今天我把我搭建xmpp的详细步骤和说明给大家看一下。 1.前提条件:我们在腾讯服务器上已经安装好了数据库。...(因为下面的xmppp开源服务器的安装使用的不是自带的数据库)。...2.然后我们开始下载xmpp的压缩包或安装包,我下的是安装包exe。下载地址:http://www.igniterealtime.org/downloads/download-landing.jsp?...安装步骤如下 这里的域就是你要配置xmpp服务器的名字,不要有空格,最好字母名字。不然出现了jid错误报错。 这里我用的是标准数据库连接,网上的教程都是第二个。
在即时通信这个领域目前只找到一个XMPP协议,在其协议基础上还是有许多成熟的产品,而且是开源的。所以还是想在这个领域多多了解一下。 XMPP协议:具体的概念我就不写了,毕竟这东西网上到处是。...这里有个XMPP的官方网站可以看看:http://xmpp.org/software,这里列举了一些现有的产品和开发包。包括Clients,Servers,Libraries,Projects。...简单的写了一个单例的类:XmppConnectionService,主要是负责与Xmpp服务器的通讯管理,这里面最主要的就是建一个连接,由于smack(4.1.x)的版本更新后和之前老的api不一样了。...", e.getMessage()); } } }.start(); } 这段代码里主要是两点注意: 1、服务器通讯要用自定义证书的话要用自定义的...SSLConent,说白点就是不验证证书是否可信。
介绍 XMPP框架分成两部分 XMPPCore 拓展 XEP XMPPCore 的类 XMPPStream XMPPParser XMPPJID XMPPElement XMPPIQ XMPPMessage...XMPPPresence XMPPModule XMPPLogging XMPPInternal XMPPStream XMPPStream XMPPStream是xmpp的核心,这是你需要接触的主要类...XMPPElement XMPPElement 是基本的类,用于三种主要的XMPP 元素 XMPPIQ,XMPPMessage 和XMPPPresence。...XMPPElement 继承自NSXMLElement 客户端与服务器交互的三个实体:IQ、Message、Presence 继承关系 XMPPIQ -> XMPPElement -> NSXMLElement...NSObject XMPPPresence -> XMPPElement -> NSXMLElement -> NSXMLNode -> NSObjec NSXML 有一个NSXMLElement+XMPP
产生这个问题的原因主要是网络不稳定、服务器或者客户端一些异常导致没有接收到消息。...这个方案如果要自己实现的话需要定制一套消息协议了,这个实现方法比较多,对于XMPP来说发message、iq都可以。...柳暗花明 在看别人的总结时发现XMPP有扩展协议是支持消息回执功能的,就是XEP-0184.了解下来这个协议确实是一套消息回执的实现方法,但是呢。。...这就突然发现又一村原来在这啊,XMPP毕竟最开始是基于TCP协议的,可以在流的基础上完成消息到达回执。它的特征也表明了这点,一是可以做消息确认,保证消息是否被另一方接收。...没想到XMPP协议已经支持了整个流程,省去了很多事情,同时openfire中websocket也是支持xep-198,所以手机端应该也是可以支持。
这种一个问题。知道是jid没有设置好,可是jid怎么设置呢?今天仍然没有弄清。假设有清楚的能够交流一下。
XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。...因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。...而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。...Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。...如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
设计基于开源的XMPP即时通信协议,采用C/S体系结构,通过GPRS无线网络用TCP协议连接到服务器,以架设开源的Openfn'e服务器作为即时通讯平台。 ...它与服务器相连,通过XMPP获得由服务器或任何其它相关的服务所提供的全部功能。三是协议网关。完成XMPP协议传输的信息与外部消息系统可识别信息间的翻译。再就是XMPP网络。...计算和验证一个强制性的端到端检验。但是GPRS网络对TCP链路存在一个限制。当TCP链路在长时间无有数据流量时。会自动降低此链路的优先级直至强制断开此链路。...数据格式 XML是XMPP系统架构的核心。它能表述几乎任何一种结构化数据。特别是XMPP利用XML数据流进行客户端一服务器端、服务器端一服务器端的通信。...在NotificationService里创建一个单线程,让其对服务器进行连接,由于使用Xmpp连接服务器要分为三步:连接,注册,登陆。
XMPP的官网:http://xmpp.org/ 测试帐号注册:https://register.jabber.org PC端下载地址注册之后就会看到下载地址 这边给一个win7 64位(本人电脑配置)...端安装包 AQQ_PR_24520-x64.zip(7.09 MB, 下载次数: 1925) 其他版本的下载地址:http://www.aqq.eu/en.php 手机端在收消息方面和QQ是一样的,当然XMPP...6.15 有很多人说源码找不到,其实XMPP的客户端源码很多,而且版本也很多 这里贴出一个android客户端的源码吧 xabber-android-master.zip(2.77 MB, 下载次数:
概述 现在很多软件都加入了聊天功能,也有许多公司直接提供了app聊天的组件,简单集成就行,但是弊端在于组件一是要收费,二是不灵活,没法自定义 聊天的协议例如微信 QQ之类都是自己定义的协议,服务器也是自己研发的...,效率也会高一点,他们都是用的json作为通讯的数据格式,一个小公司去开发这些是不现实的,幸好有开源的XMPP协议,对应的服务器是openfire XMPP协议的弊端在于数据格式用的早年比较流行的XML...,所以传输的数据会稍多一点,不过现在网速已经提上去,这点基本上可以忽略不计 所以小公司用XMPP来做聊天是个不错的选择 环境搭建 服务段 openfire的下载地址 软件下载之后直接安装就行 注意的是...openfire需要的端口一定要对外开放 iOS端 XMPP只是一个协议,iOS有对应的实现 相应的类库可以在github下载 具体的添加步骤为 添加以下的文件夹到工程中 Authentication...如果用的swift在桥接头文件中添加引用 #import "XMPP.h" #import "DDXML.h" #import "XMPPFramework.h" #import "DDLog.h"
领取专属 10元无门槛券
手把手带您无忧上云