如何为 xmpp 实现 smack
Posted
技术标签:
【中文标题】如何为 xmpp 实现 smack【英文标题】:how to implement smack for xmpp 【发布时间】:2020-12-18 21:18:58 【问题描述】:我正在尝试让我的 android 应用程序能够使用 smack 发送和接收 xmpp 消息,但它不起作用并且连接命令不返回。我看过几个代码示例,但 Smack 有新版本,语法也发生了变化,所以我可能做错了什么:
在我使用的 build.graddle 文件中:
compile "org.igniterealtime.smack:smack-android-extensions:4.3.0"
compile "org.igniterealtime.smack:smack-tcp:4.3.0"
我正在尝试从 myaccount321@xabber.org 向 myaccount456@xabber.org 发送消息 我正在尝试使用 hot-chilli.net 进行连接(我不介意使用其他服务器))
在 connection.connect() 之前一切似乎都很顺利,之后脚本不会在不触发任何异常的情况下返回。
请告诉我我做错了什么
TIA
public void sendxmpp()
XMPPTCPConnectionConfiguration config = null;
try
XMPPTCPConnectionConfiguration.Builder configbuilder = XMPPTCPConnectionConfiguration.builder();
configbuilder.setUsernameAndPassword("myaccount321","myaccount321pw");
DomainBareJid serviceName = JidCreate.domainBareFrom("hot-chilli.net");
configbuilder.setServiceName(serviceName);
configbuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
configbuilder.setHost("jabber.hot-chilli.net");
configbuilder.setPort(8222);
config=configbuilder.build();
AbstractXMPPConnection connection = new XMPPTCPConnection(config);
try
connection.connect();
catch (SmackException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
catch (XMPPException e)
e.printStackTrace();
catch (InterruptedException e)
e.printStackTrace();
connection.login();
ChatManager chatManager = ChatManager.getInstanceFor(connection);
EntityBareJid jid = JidCreate.entityBareFrom("myaccount321pw@xabber.org");
Chat chat = chatManager.createChat(jid);
chat.sendMessage("Hello");
catch (Exception e)
【问题讨论】:
【参考方案1】:好的,我知道了,连接过程必须在自己的线程中完成。
【讨论】:
以上是关于如何为 xmpp 实现 smack的主要内容,如果未能解决你的问题,请参考以下文章
无法使用教程“使用 Smack 实现基于 XMPP 的应用服务器的 Java 示例”
使用 Smack 的 QuickBlox 服务器端 XMPP 客户端
如何处理 XMPP XEP-0363:客户端使用 SMACK 库的 HTTP 文件上传功能?
使用 xmpp + smack + openfire 在 android 中阻止用户