首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >启用流管理asmack android

启用流管理asmack android
EN

Stack Overflow用户
提问于 2014-04-22 22:47:30
回答 1查看 2K关注 0票数 19

我正面临着使用XEP-0198流管理的问题。

基本上,我想在Android上启用这个消息丢弃问题,当互联网随机中断,服务器仍然有客户端在线。

为了解决这个问题,我想使用XEP-0198,它使用请求和确认过程。你可以找到更多的here

基本上我使用sm:3来做这件事。问题是,当我设置

XMPPConnection.DEBUG_ENABLED=true;

我在日志中得到了sm:3,这是asmack内部的,但我无法通过连接上添加任何packetListner来获得它。

这是内部asmack debug打印的内容:

<r xmlns='urn:xmpp:sm:3'/><message from='test1@pinmessage.com/Smack' to='test1@pinmessage.com' id='CQUe6-5'><received xmlns='urn:xmpp:receipts' id='CQUe6-4'/></message><r xmlns='urn:xmpp:sm:3'/>

这是我从packetFilter得到的:

<message id="CQUe6-5" to="test1@pinmessage.com" from="test1@pinmessage.com/Smack"><received xmlns='urn:xmpp:receipts' id='CQUe6-4'/></message>

我已经尝试过自定义包过滤器,通过查看聊天安全和yaxim的代码,但我不知道如何才能在我的代码中获得这个<r xmlns='urn:xmpp:sm:3'/>,以便我可以返回到现在收到的包的数量到服务器,以便服务器可以发送回我任何丢失的包。

我还通过添加以下代码为其配置了提供程序管理器:

        addSimplePacketExtension("sm", URN_SM_3);
        addSimplePacketExtension("r", URN_SM_3);
        addSimplePacketExtension("a", URN_SM_3);
        addSimplePacketExtension("enabled", URN_SM_3);
        addSimplePacketExtension("resumed", URN_SM_3);
        addSimplePacketExtension("failed", URN_SM_3);


private static final String URN_SM_3 = "urn:xmpp:sm:3";
    private static void addSimplePacketExtension(final String name, final String namespace) {
        Log.e("adding simple packet extension", namespace+"---"+name);
        ProviderManager.getInstance().addExtensionProvider(name, namespace,
                new PacketExtensionProvider() {
            public PacketExtension parseExtension(XmlPullParser parser) throws Exception {
                StreamHandlingPacket packet = new StreamHandlingPacket(name, namespace);
                Log.e("Stream ahndling packet ","------>"+packet.toXML());
                int attributeCount = parser.getAttributeCount();
                for (int i = 0 ; i < attributeCount ; i++) {
                    packet.addAttribute(parser.getAttributeName(i), parser.getAttributeValue(i));
                }
                return (PacketExtension) packet;
            }
        });
    }


static class StreamHandlingPacket extends Packet {
        private String name;
        private String namespace;
        Map<String, String> attributes;

        StreamHandlingPacket(String name, String namespace) {
            this.name = name;
            this.namespace = namespace;
            attributes = Collections.emptyMap();
        }

        public void addAttribute(String name, String value) {
            if (attributes == Collections.EMPTY_MAP)
                attributes = new HashMap<String, String>();
            attributes.put(name, value);
        }

        public String getAttribute(String name) {
            return attributes.get(name);
        }

        public String getNamespace() {
            return namespace;
        }

        public String getElementName() {
            return name;
        }

        public String toXML() {
            StringBuilder buf = new StringBuilder();
            buf.append("<").append(getElementName());

            // TODO Xmlns??
            if (getNamespace() != null) {
                buf.append(" xmlns=\"").append(getNamespace()).append("\"");
            }
            for (String key : attributes.keySet()) {
                buf.append(" ").append(key).append("=\"").append(StringUtils.escapeForXML(attributes.get(key))).append("\"");
            }
            buf.append("/>");
            Log.e("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&","&&&&&&&&&&&&&&&&&&&&&&&&&&&&=>"+buf.toString());
            return buf.toString();
        }

    }

基本上,我是通过查看聊天安全实现得到这个想法的,但它扩展了UnkownPacket而不是数据包。我得到了here的帮助。

我也见过a git branch of asmack like this,但不能理解如何实现它。

如果您以任何方式使用任何库实现它,如chat secure,yaxim或任何其他android XMPP客户端,请提供帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-04-24 18:55:58

yaxim使用的补丁asmack可以在这里找到(创建者非常友好地将我引向它,谢谢Ge0rG!):

https://github.com/pfleidi/yaxim/tree/master/libs

也一定要得到力比丁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23222894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档