我知道之前有人问过这个问题,但 mschonaker在这里只给出了部分回复。在我的网站上,用户可以将人员添加到他们的名单中,然后好友必须接受,最后他们被连接。第一人称(用户 a)使用著名的
roster.createEntry(jid, name, groups);
这有效并在他的名单中添加了一个条目,但后来我对该怎么做有点困惑:
我如何在另一端收到请求?我尝试实现一个 PacketListener,覆盖 processPacket() 并检查哪些类型是 Presence.Type.subscribe 或 Presence.Type.subscribed 的数据包,但它似乎只为用户 a 触发,而不是应该监听的那个订阅 - 用户 b。
然后,我有另一个功能可以在登录时查找所有请求,所以如果我再次登录,我会看到请求,但我该如何接受呢?起初,我认为用户 b 也应该在他的名册中添加用户 a
roster.createEntry(jid, name, groups);
但这没有用,什么也没有发生。我也尝试过
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo(jid);
xMPPConnection.sendPacket(subscribed);
但也没有用。我确信一定有一个好的简单的方法来做到这一点,但到目前为止我还没有在任何地方找到它,一次尝试一件事让我很头疼。有谁知道这个的正确流程?提前致谢!