OpenFire似乎忽略了RosterPacket.ItemType.both数据包

时间:2014-11-30 14:37:49

标签: xmpp openfire asmack

我对名单包有一个奇怪的问题,我不是aSmack的新手,但我之前从未遇到过这个问题,我的OpenFire服务器显然忽略了这种数据包:

       RosterPacket ropack = new RosterPacket();
       ropack.setType(IQ.Type.SET);
       RosterPacket.Item item  = new RosterPacket.Item("admin@reza-hp", null);
       item.setItemType(RosterPacket.ItemType.both);
       ropack.addRosterItem(item);
       try {
        MyService.connection.sendPacket(ropack);
    } catch (NotConnectedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

并忽略该类型并返回:

 iq type="set" id="693-6" to="reza@reza-
 hp/Smack" query xmlns="jabber:iq:roster" item jid="admin@reza-hp" 
 subscription="from"/ /query> /iq

最近我读到服务器必须忽略任何名册项目类型,但是"删除",是吗?如果它是这样我怎么应该接受服务器端的朋友请求?

1 个答案:

答案 0 :(得分:0)

名册用于在线订阅。这是它的主要目的。因此,您不应该编辑名单。您应该使用订阅工作流程并要求订阅其他联系人在场(或取消订阅)。

根据在线订阅工作流程,XMPP服务器会关心您将名册项目保持在正确的状态。

供参考,请阅读XMPP规范:https://tools.ietf.org/html/rfc6121#section-3.1