Asmack之旅(二)packet扩展

本文探讨了在XMPP框架Asmack中如何处理自定义XML数据包,重点讲解了PacketExtension和IQ Provider的概念及作用。PacketExtension用于扩展XMPP的基本功能,而IQ Provider解析IQ数据包。文章介绍了IQ的数据类型和ProviderManager的管理功能,以及解析流程,包括PacketWriter和PacketReader的工作原理。
摘要由CSDN通过智能技术生成

我们期望传递自定义的xml数据到XMPP服务器,这时候需要做些什么?应该做怎样的处理?不着急,我们一步一步看

(——个人理解和翻译,个人英语能力有限,有错误地方请指正,且有些疑问不懂的地方,会特定注明,共同进步,谢谢O(∩_∩)O~)


首先让我们了解下

PacketExtension

Packet是XMPP的数据包基本类

而packetExtension呢?类注解如下

A packet extension is an XML subdocument with a root element name and namespace. Packet extensionsare used to provide extended functionality beyond what is in the base XMPPspecification. Examples of  packetextensions include message events, message properties, and extra presence data.IQ packets cannot contain packet extensions

(packet extension是有根元素和命名空间的子文档。packetextension用来提供扩展基于xmpp规范功能。例如,packet extension包括消息事件,消息属性和额外的状态数据。IQpackets不能包括packet extension(why)


IQ

类注解如下

IQ packets are used to get and set information onthe server, including authentication, roster operations, and creating accounts.Each IQ packet has a specific type that indicates what type of actions beingtaken: "get", "set", "result", or"error".

(iq用来获取或者设置服务器的信息,包括协议,花名册,设置,创建账户等。每个iq都有指定的动作类型,比如“get”,”set”,”result”,”error”)

toXML() 返回作为packet的xml 

<iq type="result"id="N369C-0" to="192.168.5.182/d537db4b"></iq>

getChildElementXML() 返回IQ数据包的xml子元素节点 

<iq type="result"id="N369C-0" to="192.168.5.182/d537db4b">
<bindxmlns="urn:ietf:params:xml:ns:xmpp-bind">
<jid>test2@192.168.5.182/Smack</jid>
</bind>
</iq>


IQ Provider

类注解如下

An interface for parsing custom IQ packets. EachIQProvider must be registered with the ProviderManager class for it to be used.Every implementation of this interface must have a public, no-argumentconstructor.

(解析IQ的接口。如果要使用IQProvider,则必须通过ProviderManager注册。继承该接口必须有个公共的没有参数的结构方法)

让我们来看看IQ Provider的继承者们吧

public class PingProvider implements IQProvider {
    public IQ parseIQ(XmlPullParser parser) throws Exception {
        // No need to use the ping constructor with arguments. IQ will already
        // have filled out all relevant fields ('from', 'to', 'id').
        return new Ping();
    }
}

注意到一点PingProvi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值