Smack 4.1.x升级指南

简介: Smack 4.1.x升级指南 一、Smack 4.1的主要改进 Smack 4.1.x最大的改进有两点: 1)支持XEP-198规范,即流管理 2)原生支持Android Smack 4.1使得原先的aSmack库可以丢入垃圾堆了。

Smack 4.1.x升级指南

一、Smack 4.1的主要改进

Smack 4.1.x最大的改进有两点:
1)支持XEP-198规范,即流管理
2)原生支持Android
Smack 4.1使得原先的aSmack库可以丢入垃圾堆了。注意aSmack的最新版本只到4.0.7版。

二、流管理

流管理(Stream Management)
Smack 4.1默认流管理是关闭的。可以通过下面的方法开启流管理:
XMPPTCPConnection.setUseStreamManagement(true)

流管理规范可以查阅:http://xmpp.org/extensions/xep-0198.html 
流管理是XMPP的一个扩展,添加了确认(Acknowledgement)节和流恢复。这意味着如果在手机上使用Jabber,那么即使不在服务区,也不会丢失消息。
Jaber使用TCP协议,TCP协议是可靠的协议,当用户丢失连接时,消息可能丢失,此时服务区仍然保持了对客户端打开TCP连接,发送消息,而客户端离开服务区,消息可能就丢失了。
在较好的情况下,客户端离开服务区时,网络服务商(Network Provider)会立即关闭连接,这样的话,消息就会作为离线消息保存到服务器。而在某些较坏的情况下,客户端离开l 服务区,而服务器的连接并没有断开,此时服务器转发消息到客户端,消息就会丢失。
XEP-198规范就是针对这种情况的解决方案,它并不是让客户端离线时还能保持连接,而是引入了两个重要的元素,让客户端在错过了消息后还能把消息找回来。
确认节允许服务器和客户端对每一个发送的单个消息或群消息的请求进行确认,一旦收到了确认,就认为消息交付成功了。
当重建连接时,使用流恢复。通过在确认节包含序列号,客户端和服务器都能彼此清楚消息是在什么时候中断的,能重新发送消息。
这两个机制可以对交付的每一条消息提供可靠的保证,同样的机制还可用于S2S(服务器连接服务器)。

三、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类的getStanzaId方法来代替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

目录
相关文章
|
计算机视觉
Mac-Mini 外接三个显示器教程
Mac-mini 官方只支持连接2个显示器,ctrl cv 复制粘贴代码和写博客的时候十分不方便,这时候需要外接第三个显示器,下面看看如何操作。
1578 0
Mac-Mini 外接三个显示器教程
|
11月前
|
人工智能 算法 数据安全/隐私保护
基于文档智能和百炼平台的RAG应用-部署实践有感
本文对《文档智能 & RAG让AI大模型更懂业务》解决方案进行了详细测评,涵盖实践原理理解、部署体验、LLM知识库优势及改进空间、适用业务场景等方面。测评指出,该方案在提升AI大模型对特定业务领域的理解和应用能力方面表现突出,但需在技术细节描述、知识库维护、多语言支持、性能优化及数据安全等方面进一步完善。
476 1
|
2月前
|
API Android开发 数据安全/隐私保护
手机虚拟视频替换摄像头,虚拟摄像头手机版,安卓免root虚拟摄像头【python】
这个实现包含四个主要模块:虚拟摄像头核心功能、视频源管理、视频特效处理和主应用界面
|
2月前
|
移动开发 小程序 开发工具
揭秘微信/支付宝6大支付方式:从扫码到刷脸,谁在偷偷赚你的手续费?优雅草卓伊凡
揭秘微信/支付宝6大支付方式:从扫码到刷脸,谁在偷偷赚你的手续费?优雅草卓伊凡
382 0
揭秘微信/支付宝6大支付方式:从扫码到刷脸,谁在偷偷赚你的手续费?优雅草卓伊凡
|
1月前
|
数据采集 编解码 监控
Go语言实战案例:使用channel实现生产者消费者模型
本文是「Go语言100个实战案例 · 网络与并发篇」第4篇,通过实战案例详解使用 Channel 实现生产者-消费者模型,涵盖并发控制、任务调度及Go语言并发哲学,助你掌握优雅的并发编程技巧。
|
8月前
|
存储 编解码 前端开发
React 视频上传组件 Video Upload
随着互联网的发展,视频内容在网站和应用中愈发重要。本文探讨如何使用React构建高效、可靠的视频上传组件,涵盖基础概念、常见问题及解决方案。通过React的虚拟DOM和组件化开发模式,实现文件选择、进度显示、格式验证等功能,并解决跨域请求、并发上传等易错点。提供完整代码案例,确保用户能顺畅上传视频。
350 92
|
11月前
|
编解码 监控 算法
高动态范围成像:超越人眼的视觉体验
【10月更文挑战第15天】高动态范围成像(HDR)通过捕捉更广泛的亮度范围,超越传统图像和人眼的极限,提供卓越的视觉体验。本文深入解析HDR的基本原理、技术特点及其在摄影、电影、游戏、医学影像和工业检测等领域的广泛应用,展现其引领视觉技术革命的独特魅力。
|
网络协议 网络虚拟化
eNSP华为模拟器使用——(11)eNSP模拟无线AC和AP
eNSP模拟无线AC和AP 1、拓扑 2、需求(实现AC和AP二层关联) 3、配置(dhcp enable; interface Vlanif 1; ip address 192.
7561 0
|
弹性计算 网络安全 Apache
windows server2012服务器下PHPstudy配置ssl证书(https配置)
windows server2012服务器下PHPstudy配置ssl证书(https配置)
462 0

热门文章

最新文章