Smack + Openfir xmpp im踩坑之切换用户SmackException$AlreadyConnectedException: Client is already connected

本文介绍在使用Smack+Openfire进行即时通讯应用开发时遇到的多用户切换登录异常问题及其解决方案。通过调整XMPPTCPConnection实例管理方式,避免了因连接未正确断开导致的重复连接异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做Smack + Openfir xmpp聊天程序,多用户时,切换用户登陆时老是报异常SmackException$AlreadyConnectedException: Client is already connected;


01-05 23:41:42.045 11079-11404/com.example.fanyuan.myim W/System.err: org.jivesoftware.smack.SmackException$AlreadyConnectedException: Client is already connected
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at org.jivesoftware.smack.tcp.XMPPTCPConnection.throwAlreadyConnectedExceptionIfAppropriate(XMPPTCPConnection.java:342)
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:351)
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at com.example.fanyuan.myim.XmppManager$1.run(XmppManager.java:56)
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-05 23:41:42.049 11079-11404/com.example.fanyuan.myim W/System.err:     at java.lang.Thread.run(Thread.java:856)




明明调用了XMPPTCPConnection的disconnect()方法


折腾了一天,后来无心之下发现了解决点;


因为XMPPTCPConnection类我做成了类似单例的全局唯一实例,发现了点就好说了,就是每当切换帐户登陆时都要新建一个XMPPTCPConnection实例

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值