在 Xmpp/Openfire 中从名册中删除一个朋友

Posted

技术标签:

【中文标题】在 Xmpp/Openfire 中从名册中删除一个朋友【英文标题】:Delete a Friend from Roster in Xmpp/Openfire 【发布时间】:2013-01-14 11:26:06 【问题描述】:

在我的聊天应用程序中。我正在使用 smack 库,在订阅管理的帮助下,我完成了将朋友添加到特定人的名册的部分。

现在我希望当有人拒绝好友请求时,我向其他用户发送 UNSUBSCRIBE PACKET 相同的内容,该好友不会从其他用户的名册中删除。它只是显示 NONE 订阅。

代码:

Presence unsubscribe = new Presence(Presence.Type.unsubscribe);
                unsubscribe.setTo(ABC@ABC.COM);             
                connection.sendPacket(unsubscribe);

如何从朋友的名册中删除该用户。我可以从 openfire 门户中做到这一点,但不知道如何从代码中做到这一点。

【问题讨论】:

您好,您找到解决方案了吗?我也遇到同样的问题。请救救我 【参考方案1】:

来自Smack forum,此代码可能有效:

RosterPacket packet = new RosterPacket();
packet.setType(IQ.Type.SET);
RosterPacket.Item item  = new RosterPacket.Item("ABC@ABC.COM", null);
item.setItemType(RosterPacket.ItemType.REMOVE);
packet.addRosterItem(item);
connection.sendPacket(packet);

【讨论】:

【参考方案2】:

这段代码对我有用

    if(selectedRoster != null) 
        Presence presence = new Presence(Presence.Type.unsubscribe);
        presence.setTo(selectedRoster.getUser());
        presence.setStatus("Offline");
        presence.setShow("unavailable");
        ConnectionController.GetInstance(this).getXMPPConnection().sendPacket(presence);

        try 
            roster.removeEntry(selectedRoster);
         catch (XMPPException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
    

【讨论】:

以上是关于在 Xmpp/Openfire 中从名册中删除一个朋友的主要内容,如果未能解决你的问题,请参考以下文章

XMPP、openfire 和 bot 问题

如何在 xmpp openfire 服务器中启用 websockets

如何使用 Smack 在 XMPP openfire 中了解打字状态

如何使用 Smack 在 XMPP openfire 中了解打字状态

XMPP——openfire、PHP 和 python 网络服务

使用 java 连接到 xmpp(openfire) 服务器时出错