asmack
dianyueneo
这个作者很懒,什么都没留下…
展开
-
xmpp smack源码分析前期准备——XmpPullParser【2】
smack主要封装了xmpp协议,提供更方便的api去操作xmpp协议,具体详细可以到这边文章了解:http://www.cnblogs.com/not-code/archive/2011/07/16/2108369.html 鉴于xmpp协议都是以xml格式来传输,因此源码中解析协议都是用到XmpPullParser来解析xml。因此本文先介绍XmpPullParser的用法,在下一章就分转载 2013-04-12 14:42:50 · 1065 阅读 · 0 评论 -
smack 源码分析- PacketWriter (android上实现长连接)【2】
上一篇smack 源码分析一(android上实现长连接) 整体分析了smack长连接的流程, 本篇将详细介绍PacketWriter. PacketWriter是在上篇在介绍initConnection()方法中创建的,那么详细看下PacketWriter的实现: [java] view plaincopy protecte转载 2013-04-12 14:38:33 · 1295 阅读 · 0 评论 -
smack 源码分析- PacketReader (android上实现长连接)【3】
smack 源码分析- PacketWriter (android上实现长连接) 介绍完PacketWriter 之后, 接下来分析PacketReader. PacketReader的作用主要用来接收云端推送的消息并解析然后调用相应的监听器完成相关的操作. 什么都别说, 先看代码: [java] view plaincopy //构造函数转载 2013-04-12 14:39:16 · 1144 阅读 · 0 评论 -
asmack实现端到端的消息回执(XEP-0184: Message Delivery Receipts)
要想保证信息的传输,目前在smack/asmack + openfire架构上,我个人想到有两种实现方式: 1.端到端确保发送(类似短信)。 其实这个就是xmpp协议的XEP-0184: Message Delivery Receipts. 里边为了确保消息的到达,需要接收方返回回执,这样发送方就知道对方是否确切收到消息。 当然咯,接收回执过程中也可能出现断线,导致发送转载 2014-01-17 12:03:47 · 6667 阅读 · 4 评论 -
基于XMPP协议的aSmack源码分析【1】
在研究如何实现Pushing功能期间,收集了很多关于Pushing的资料,其中有一个androidnp开源项目用的人比较多,但是由于长时间没有什么人去维护,听说bug的几率挺多的,为了以后自己的产品稳定些,所以就打算自己研究一下asmack的源码,自己做一个插件,androidnp移动端的源码中包含了一个叫做asmack的jar。 Reader和Writer 在asmack中有两个非常转载 2013-04-12 14:34:44 · 1348 阅读 · 0 评论 -
android smack源码分析——接收消息以及如何解析消息【3】
在android里面用的smack包其实叫做asmack,该包提供了两种不同的连接方式:socket和httpclient。该并且提供了很多操作xmpp协议的API,也方便各种不同自定义协议的扩展。我们不需要自己重新去定义一套接收机制来扩展新的协议,只需继承然后在类里处理自己的协议就可以了。而本文今天主要说两点,一点就是消息是如何接收的,另一点就是消息是如何通知事件的。 总的思路转载 2013-04-12 14:43:25 · 1366 阅读 · 0 评论 -
基于XMPP协议的aSmack源码分析【3】register过程分析
register过程分析 RegisterTask这个task在运行中,添加了一个监听,上面说道的PacketReader中有一个消息机制,在不停的解析服务器返回的结果,然后将解析过后的包分发给各个监听器(观察者),而register中就注册了一个监听器,比较有意思的是,监听器被注册时还加了一个过滤器,这个过滤器的目的是监听器只接收自己感兴趣的内容,这个设计真的很赞。这样就不必在数据源头Pack转载 2013-04-12 14:36:12 · 1005 阅读 · 0 评论 -
asmack 0.8.2 版之后心跳包问题
最近做项目,发现0.8.2版之后PacketWriter中的心跳包线程keepAliveThread没有了,查看changelog发现 -Removed the whitespace ping code SMACK-412 原来XMPP可以通过一个扩展协议XEP-0199来实现客户端与服务器端的心跳。XEP-0199规定通过发送命名空间为'urn:xmpp:ping'的iq节XML流来解决这个原创 2014-01-17 17:16:55 · 6179 阅读 · 0 评论 -
解决因手机客户端android网络不稳定而导致asmack不能自动重连接openfire的问题
asmact自动重连要能进行,那么asmact必须要使用ReconnectionManager类。可是在asmact的ConnectionConfiguration源码中,没有任何加载ReconnectionManager类的代码,所以在客户端单独使用如下设置是不起作用的: 1 configuration.setReconnectionAllowed(tru转载 2014-01-17 12:02:25 · 5718 阅读 · 2 评论 -
基于XMPP协议的aSmack源码分析【2】PacketReader
PacketReader PacketReader所有的核心逻辑都在一个线程中完成的,PacketReader的工作很专注,同样的在一个while loop中 不停的解析、刷新reader对象、同时作为事件源发送解析过后的各种Packet,解析这里用的是Android独特的Pull解析,Pull解析的特点事件驱动,在这里被完全的利用了起来,随着不同的标签,PacketReader都会做出不同转载 2013-04-12 14:35:28 · 1068 阅读 · 0 评论 -
android asmack 注册 登陆 聊天 多人聊天室 文件传输【1】
XMPP协议简介 XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的,最早是在Jabber上实现的。它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。并且XML很易穿过防火墙,所以用XMPP构建的应用不易受到防火墙的阻碍。利用XMP转载 2013-04-12 14:41:32 · 2076 阅读 · 1 评论 -
smack 源码分析一(android上实现长连接)【1】
前段时间应一个项目需求: 要求给终端短信, 联系人信息做一个云存储云备份及云端远程控制终端并且云端能够推送消息到终端的需求. 这需要在终端与云端建立一个长连接以便云端消息能及时推送到终端. 所以项目中用到了smack框架. smack功能强大, 远不止本文所写的这点内容. 现在我只将对smack的理解以及项目中对smack的使用心得总结并记录下来, 一则给大家分享 , 二则也算是一个技术经验转载 2013-04-12 14:38:03 · 1464 阅读 · 0 评论