IM心路历程1

       今天遇到一个问题想做个记录,首先描述一下问题吧!

       问题是这样的:A用户要添加B用户为好友,当A把请求发到B之后,B这边弹出接受好友dialog,之后 点击接受,A的用户列表正确显示B的ID和状态,但是B这边没有A用户的状   态不明。之后,我试了一下A和B能不能聊起来,结果A向B发消息没有问题,但是B往A发消息A却收不到,没有任何错误提示。

      查找这个bug的原因:

             1.是不是请求之后xmpp连接断掉了?

              2.是不是A没有及时更新自己的在线状态?

       就照着上面两个思路查了大半天,结果徒劳,上午干什么都没劲,找不到问题的原因,xmpp进行二次开发,涉及到的东西还挺多,所以一旦遇到问题,都得缕出一个思路,要不然像个无头苍蝇是没办法解决bug的。

      下午自己做了面条吃了,吃的不爽,没胃口。最后做了几个实验,首先得抓到B点击完接受之后给A发的数据能监听到吧,所以就照着这个思路在监听的位置打了个断点,结果是可喜的至少自己的假设是正确的,然后就是单步跟踪了,结果跟到取sharePreference的时候我恍然大悟了,原来我没有实现这个功能啊,结果还真是取出的结果集是NULL,于是把这块的结果集我先 写成固定的。编译后继续跟踪这块,再往下走,就不对了,我看我的Roster.getDefaultSubscriptionMode()是manul呀,这怎么回事?条件怎么是SubscriptionMode.accept_all,走另一个分支的话可是我没实现啊,蛋疼!所以猜想那一块是不是把响应模式设定好了,所以我搜索了一下manul,恩 ,没错,又一次猜想正确,开始初始化连接的时候讲邀请好像响应模式改为了Roster.SubscriptionMode.manual,所以你懂得。在此其实可以得出一个小结论了,不设置的话默认就是accept all。所以改了之后再跟踪结果就正确了,成功将Presence subscription = new Presence(Presence.Type.subscribe);发出去了,B好友列表中A的状态显示在线,那当然了,A和B也能正常聊天了,好了,明天完善,今天就到这。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的幸运儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值