Openfire --用户登录返回roster为空

【问题描述】

Openfire日志(Debugger Plugin):

C2S - RECV (3696162): <iq id="67bo5-2" type="get"><query xmlns="jabber:iq:roster"></query></iq>
INTERPRETED: <iq id="67bo5-2" type="get" from="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"/></iq>

C2S - SENT (3696162): <iq type="result" id="67bo5-2" to="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"/></iq>


【问题分析】

IQRosterHandler——

 * Implements the TYPE_IQ jabber:iq:roster protocol. Clients
 * use this protocol to retrieve, update, and rosterMonitor roster
 * entries (buddy lists). The server manages the basics of
 * roster subscriptions and roster updates based on presence
 * and iq:roster packets, while the client maintains the user
 * interface aspects of rosters such as organizing roster
 * entries into groups.


 private IQ manageRoster(org.xmpp.packet.Roster packet) throws UnauthorizedException,
            UserAlreadyExistsException, SharedGroupException {

         ......

        if ((sender.getNode() == null || !RosterManager.isRosterServiceEnabled() ||  <--此处isRosterServiceEnabled返回false,导致后面空roster回复
                    !userManager.isRegisteredUser(sender.getNode())) &&
                    IQ.Type.get == type) {
                // If anonymous user asks for his roster or roster service is disabled then
                // return an empty roster
                IQ reply = IQ.createResultIQ(packet);
                reply.setChildElement("query", "jabber:iq:roster");
                return reply;


继续:

    public static boolean isRosterServiceEnabled() {
    boolean bRet = JiveGlobals.getBooleanProperty("xmpp.client.roster.active", true); <--原来“系统属性”-->"xmpp.client.roster.active"被置为false了

        return bRet;
    }


【解决方案】

“系统属性”-->"xmpp.client.roster.active"置为true,收发报文正确

C2S - RECV (2944378): <iq id="j9O8X-2" type="get"><query xmlns="jabber:iq:roster"></query></iq>
INTERPRETED: <iq id="j9O8X-2" type="get" from="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"/></iq>
C2S - SENT (2944378): <iq type="result" id="j9O8X-2" to="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"><item jid="wfp@10.10.122.171" name="wfp" subscription="both"><group>Friends</group></item></query></iq>


但是spark客户端在A电脑登录还是无法显示其roster,同一账号在B电脑上登录就显示正常;

尝试将C:\Users\lenovo\AppData\Roaming\Spark下的内容删除,同时重装spark,问题依然;

后面尝试在A中Spark面板 -->联系人 -->显示离线用户 选项勾选,即能够正常看到roster;但是B中没有勾选却能正常显示。估计此为spark的bug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值