http://www.ox-holdings.com

注意aSmack的最新版本只到4.0新匍京娱乐场官方下载:.7版,并提供重要的类和概念的概述

摘要Smack是盛名的开源XMPP客商端库,另多个开源IM全成效客商端斯Parker正是依赖此库编写的,二零一七年一月三十一日Smack正式发由了4.2.0版。前言Smack是知名的开源XMPP顾客端库,另贰个开源IM全功用客商端斯Parker就是依靠此库编写的(斯Parker或其修正版被广大本国中型小型公司作为个中调换工具),二〇一七年1月16日Smack正式发表了4.2.0版,此版为主要更新版。更新内容Sub-task[SMACK-639]

How to handle peers that are silent

Smack 4.1.x进级指南

与名单合作工作

名单可让您追踪别的顾客的可用性(在线状态)。 客商能够组织成“朋友”和“同事”组,知晓各种客户是在线如故离线。

使用Roster.getInstanceFor(XMPPConnection)主意获得花名册。 花名册类允许你寻觅全体的名册条目,它们所属的组以致各类条指标脚下意况。

从顾客端向XMPP服务器发送的每条消息称为八个数据包(packet),并以XML格式发送。 org.jivesoftware.smack.packet双肩包含封吹捧MPP允许的二种(message, presence, and IQState of Qatar区别基本数据包类型的类。 诸如Chat和GroupChat提供了拘留机关成立和发送数据包的更加高档别的构造(高端方法),不过你也得以直接创立和发送数据包。 以下是三个代码示例,用于转移您的在线状态,让群众了然您“外出钓鱼”:

// Create a new presence. Pass in false to indicate we're unavailable._
Presence presence = new Presence(Presence.Type.unavailable);
presence.setStatus("Gone fishing");
// Send the stanza (assume we have an XMPPConnection instance called "con").
con.sendStanza(presence);

Smack提供了二种读取传入数据包的法子: StanzaListener和StanzaCollector
。 两个都使用StanzaFilter实例来规定相应管理哪个XML Stanza(XML节卡塔尔国。 StanzaListener用于事件风格编制程序,而节StanzaCollector具有三个能够举行轮询和截留操作的数量包结果队列。 所以,当七个节面世时,当你想行使部分动作时,四个StanzaListener会很有用,而当您想要等待多个一定的数额包抵达时,三个斯坦zaCollector会很有用。 能够使用Connection实例成立StanzaListener和StanzaCollector。

  • Add support for pre-approved subscription requests (RFC 6121 § 3.4)Bug[SMACK-306] - loadRosterOnLogin has non-trivial side effect on getRoster[SMACK-416] - Refactor PEP to make it use the existing pubsub API.[SMACK-674] - PubSub Affiliation extension element is missing 'jid' attribute, and is using wrong element name 'subscription'[SMACK-682] - Add support for "XEP-0360: Nonzas (are not Stanzas)"[SMACK-683] - Using a Proxy with XMPPTCPConnection failes with "SocketException: Unconnected sockets not implemented"[SMACK-691]
  • Add support for MUCItem's Actor 'nick'[SMACK-705] - PubSub's Affiliation.getElementName() returns wrong name[SMACK-722] - SASL X-OAUTH2 implementation incorrectly performs Base64 encoding twice[SMACK-723] - Support "Caps Optimizations" (XEP-0115 § 8.4)[SMACK-724] - Do not re-use the Socket after connect() failed.[SMACK-725] - ReconnectionManager should handle AlreadyConnectedException and AlreadyLoggedInException not as failure[SMACK-741] - Ad-hoc command 'note' element 'type' attribute should be treated as optional[SMACK-745] - Memory leak in MultiUserChatNew Feature[SMACK-366] - Add support for DNSSEC.[SMACK-610] - Add support for XEP-0080: User Location[SMACK-619] - Add roomDestroyed to MUC UserStatusListener[SMACK-625] - Add support for XEP-313: Message Archive Management[SMACK-675] - Add support for PubSub affiliation actions as owner[SMACK-677] - Add support for SASL 'authzid' (Authorization Identity)[SMACK-690] - Add support for DNS-Based Authentication of Named Entities (DANE, RFC 6698)[SMACK-731] - Add support for XEP-0191: Blocking Command[SMACK-732] - Smack should be able to handle "single equals sign" SASL responses[SMACK-740] - Add support for Multi-User Chat Light[SMACK-742] - Add support for XEP-0133: Service Administration[SMACK-747] - Add support for XEP-0363: HTTP File UploadTask[SMACK-638] - Call connection creation listeners from within AbstractXMPPConnection's constructor[SMACK-644]
  • Throw exception if account creation or password change is performed over insecure connections[SMACK-655] - Enable StreamManagement by defaultImprovement[SMACK-372] - Make package protected methods in PEPItem public[SMACK-572] - Rejoin MUC rooms after reconnect[SMACK-628] - Rework Roster handling with anonymous connections[SMACK-629] - Rework how Smack handles anonymous connections[SMACK-631] - Improve ParsingExceptionCallback, allow it to be a functional interface[SMACK-632] - Make Smack interruptible[SMACK-633] - Allow clean and graceful disconnects (stream closing)[SMACK-634] - Use jxmpp-jid, add Jid class to replace String's being used as JIDs[SMACK-646] - Add support for MUC roomnick rewrite[SMACK-647] - Don't automatically call login() on connect() if the connection was authenticated before[SMACK-648] - Improve MultiUserChat API[SMACK-657] - Rename RosterEntry.getStatus and RosterPacket.ItemStatus to ItemAskStatus[SMACK-663] - Roster should be fully loaded when Roster.getInstanceFor(XMPPConnection) is called with a authenticated connection[SMACK-665] - Rename 'serviceName' to 'xmppServiceDomain'[SMACK-666] - Typo in 'RosterEntries.rosterEntires()', change to 'RosterEntries.rosterEntries()'[SMACK-703] - Limit the stored presences of entities not in Roster[SMACK-704] - Pass down Message stanza in ChatStateListener[SMACK-711] - Improve the logging of TCP connection attempts.[SMACK-720] - Improve support for Tor and Hidden Services.[SMACK-721] - Report illegal Stream Management states to avoid OOM Exception[SMACK-727] - Add partial support for the IoT XEPs (XEP-0323, -0324, -0325, -0347)[SMACK-733] - Handle outgoing 'unavailable' Presences in Roster[SMACK-736] - Add support for Chat Markers (XEP-0333)[SMACK-737] - Add support for Bits of Binary (XEP-0231)[SMACK-738] - Add support for Push Notifications (XEP-0357State of Qatar下载地址下载地址点此进入:

Error handling related to xML streams

二、流管理

流管理(Stream Management)
Smack 4.1暗中同意流管理是关闭的。能够透过下边包车型大巴办法开启流管理:
XMPPTCPConnection.setUseStreamManagement(true)

流管理规范可以查看:
流管理是XMPP的三个恢宏,增多了认同(Acknowledgement)节和流苏醒。那意味假设在手提式无线电话机上应用Jabber,那么就算不在服务区,也不会丢弃信息。
Jaber使用TCP合同,TCP左券是牢靠的商酌,当客户错过连接时,音信或者丢弃,此时服务区依然维持了对客商端张开TCP连接,发送音信,而顾客端离开服务区,音信大概就舍弃了。
在较好的情况下,顾客端离开服务区时,互连网服务商(Network Provider)会立刻关闭连接,那样的话,新闻就能够作为离线音信用保证存到服务器。而在一些较坏的情况下,顾客端离开l 服务区,而服务器的总是并从未断开,那个时候服务器转载消息到顾客端,新闻就能扬弃。
XEP-198专门的职业就是本着这种地方包车型地铁解决方案,它并非让客户端离线时还是能够保全接二连三,而是引进了八个基本点的成分,让客户端在失去了音信后还是能够把音讯找回来。
确认节允许服务器和客商端对每二个发送的单个音信或群新闻的央求举行确认,一旦选用了承认,就觉着新闻交付成功了。
当重新建立连接时,使用流复苏。通过在确认节包罗种类号,客商端和服务器都能相互精通新闻是在怎么时候抛锚的,能重复发送新闻。
那多少个机制能够对交付的每一条新闻提供保证的管教,同样的体制还可用以S2S(服务器连接服务器)。

JA本田UR-V文件和血脉相仿要求(注意点)

Smack能够轻便地放到到任何现成的Java应用程序中。 库被分作多少个JA奥迪Q3文件,以便越来越灵活的按供给给应用程序提供有关职能:

smack-core.jar

  • 提供主旨XMPP功效。 涵盖作为XMPP 奥迪Q5FC的一局地的有着XMPP作用。
    smack-im.jar
  • 提供SportageFC 6121(XMPP-IM)中定义的意义,如花名册。
    smack-tcp.jar
  • 通过TCP帮助XMPP。 包含XMPPTCPConnection类,二个常用的类。
    smack-extensions.jar
  • 扶助由XMPP规范基金会概念的大队人马恢宏(XEP),包含多客商闲谈,文件传输,客商寻觅等。
    smack-experimental.jar
  • 支撑由XMPP规范基金会概念的尝试扩充(XEP)。 那么些扩大的API和功力平常被感到是不安静的。
    smack-legacy.jar
  • 援救由XMPP标准基金会定义的旧扩张(XEP)。
    smack-bosh.jar
  • 支撑BOSH(XEP-0124)。 该代码应该被视为beta。
    smack-jingle.jar
  • 协理Jingle。 这段代码是旧的,现已不复维护。
    smack-resolver-dnsjava.jar
  • 支持在dnsjava的声援下深入分析DNS S大切诺基V记录。 适用于不帮助javax.naming API的平台。
    smack-resolver-javax.jar
  • 扶植使用javax命名空间API解析DNS S牧马人V记录。
    smack-debug.jar
  • 用以合同流量的巩固型GUI调节和测验器。 当在类路线中找到而且启用调节和测量检验时,它将活动使用。

How to close a stream

一、Smack 4.1的首要性更正

Smack 4.1.x最大的精雕细刻有两点:
1)接济XEP-198正规,即流管理
2)原生援救Android
Smack 4.1驱动原本的aSmack库能够丢入垃圾堆了。注意aSmack的新星版本只到4.0.7版。

树立连接

XMPPTCPConnection类用于创建与XMPP服务器的连续几天。 以下是拓宽连接的代码示例:

// Create a connection to the jabber.org server.
AbstractXMPPConnection conn1 = new XMPPTCPConnection("username", "password" "jabber.org");
conn1.connect();

// Create a connection to the jabber.org server on a specific port.
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
  .setUsernameAndPassword("username", "password")
  .setXmppDomain("jabber.org")
  .setHost("earl.jabber.org")
  .setPort("8222")
  .build();

AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);
conn2.connect();

请在乎,暗许处境下,连接纳服务器时将选取最大的安全性(当恐怕的时候卡塔尔国,包蕴利用TLS加密。 ConnectionConfiguration类提供对创设的连年的高端调节,比如禁止使用或展开加密的法力。 有关详细音信,请参阅XMPPConnection Management 。

创立连接后,您应该使用XMPPConnection.login(卡塔尔国方法登陆。 登入后,您能够经过创办新的Chat或MultiUserChat对象与其余客商进行闲谈。

术语

  • bare JID : 基本JID
    localpart@domainpart
  • full JID: 完整 JID, 差异是加上了能源部分
    localpart@domainpart/resourcepart
  • XML stanza: XML 节, 即一个XMPP的XML 消息
  • route: 路由, 三个音讯经由什么路径发到指标地

三、Smack 4.1的API变化

Smack 4.1.x首要的API变化包罗:

  1. XMPPConnection改动为接口
    当申明连接时,能够行使AbstractXMPPConnection大概是XMPPConnection的子类作为静态类型。

  2. 重新完毕了SASL认证
    对于自定义的SASL机制,可能要调治代码。

  3. 增加了IQ央求句柄API
    包(Packet)监听器和包搜聚器不再能监听IQ央求,也即IQ的“get”和“set”类型。

  4. XMPPConnection.addPacketListener方法被放任了
    改为用增添异步包监听器addAsyncPacketListener方法或增添同步包监听器addSyncPacketListener方法来顶替它。

  5. StringUtils工具类
    StringUtils工具类增多到XmppStringUtils包(在jxmpp-core包中),方法名也有个别变化,比如parseName更动为parseLocalpart。

  6. 音讯监听器类的变通
    音信监听器MessageListener类改名叫ChatMessageListener,MessageListener类名现在是不通的接口。

  7. 连年配置类使用了Builder情势
    连续几日来配置ConnectionConfiguration类使用了Builder设计方式。

  8. FormField.getType和Form.getType
    FormField.getType和Form.getType都改成了枚举类型Enum。

  9. 撇开了包Packet接口
    包Packet接口放任了。使用新的Stanza类的get斯坦zaId方法来替代getPacketID方法。

  10. Roster类的生成
    选用Roster.instance获得一个实例,原先是XMPPConnection.getRoster方法得到的。

  11. ConnectionListener.authenticated方法的变动
    ConnectionListener.authenticated方法新添了一个布尔型参数resumed。

  12. XMPPTCPConnection.addStanzaAcknowledgedListener方法撤废了三个可怜
    XMPPTCPConnection.addStanzaAcknowledgedListener方法撤销了StreamManagementNotEnabledException卓殊。

  13. 要是运用SASL增加,要选用ConnectionConfiguration.Builder.allowEmptyOrNullUsernames

  14. SmackConfiguration.DEBUG_ENABLED变更为SmackConfiguration.DEBUG

正文长久更新链接地址:

4.1.x进级指南 一、Smack 4.1的重点校勘 Smack 4.1.x最大的改良有两点: 1)帮衬XEP-198业内,即流管理 2)原生扶植Android Smack 4.1使得原来的...

配置

Smack有三个包括五个品级的初阶化进度。

  • 起初化系统质量 - 起头化通过类SmackConfiguration可访问的兼具系统天性。 那个属性由此类的getXXX主意取得。
  • 初阶化运行类 - 通超过实际例化进度开头化任何在运转时处于活动状态的类,假诺扩张了SmackInitializer ,则调用该类的initialize方式。 假若它不扩展这么些接口,那么最初化将必得在叁个静态的代码块中开展,那几个代码在加载类时自动实行。

伊始化通过安插文件完毕。 默许景况下,Smack将加载嵌入在Smack.jar中的org.jivesoftware.smack / smack- config.xml。 此特定配置饱含将在被加载的初步化程序类(initializer 起头化者)的列表。 全体供给开头化的处理人(manager )类型类都以早先化程序类(initializer 开首化者)。

架构

  • Global addresses
  • Presence
  • Persistent Streams
  • Structured Data
  • Distributed Network of Clients and Servers

正文将向你介绍Smack API,并提供关键的类和概念的概述。

郑重声明:本文版权归新匍京a奥门-最全网站手机版app官方下载所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。