如何在 Openfire 中使用 smack
Posted
技术标签:
【中文标题】如何在 Openfire 中使用 smack【英文标题】:How to use smack with Openfire 【发布时间】:2011-08-23 03:48:42 【问题描述】:嗨 我正计划开发一个可以连接到 gtalk facebook 等的聊天客户端......我决定使用 smack API 和 openfire..
但我几乎不需要关于如何将它与 openfire 服务器一起使用的指导..
openfire 是否提供了一个基本的用户界面,例如登录框聊天窗口等...
我需要知道如何通过 openfire 插入或使用 smack
谢谢:)
【问题讨论】:
浏览网页时发现了这个可能有用的链接:Instant Messaging Infrastructure 【参考方案1】:我决定将 smack API 与 openfire 一起使用。 但我几乎不需要指导如何 将它与 openfire 服务器一起使用..
Smack API Getting Started 呢?
openfire 是否提供了一个基本的 登录框聊天窗口等 UI...
OpenFire 只是服务器。要真正聊天,您需要一些 Jabber/XMPP 客户端。您可以使用Spark 进行测试。
【讨论】:
@Tim-它没有告诉我应该如何使用 openfire...比如我应该插入 smack 还是有不同的步骤 当然,您按照此处所述设置服务器:igniterealtime.org/builds/openfire/docs/latest/documentation/…。此后,您可以连接某些客户端或 smack API。 @Tim 我已经设置了 openfire...我想问如何将它与 smack API 连接起来?? 你开始了吗?发布一些源代码以及你得到的异常...... 我想你还没有完全理解。您需要一些了解 XMPP 协议的服务器。在你的情况下是 OpenFire、GTalk 或其他东西。当客户端连接时,它会按照协议中的描述发送 XMPP 消息,请参阅 Wikipedia:en.wikipedia.org/wiki/…。到目前为止一切顺利,要实现客户端,您可以使用 smack API。使用此 API,您可以使用 Java 构造和发送上述 XMPP 消息。简而言之:Smack API 不是 OpenFire 插件,也不需要在服务器上。你只是用它来构建一个客户端。【参考方案2】:配置 openfire 然后参考documentation provided by Smack。它有易于理解的示例。仅供参考,openfire 在 gtalk 上运行良好,但在 facebook 上运行速度很慢。
示例代码:-
ConnectionConfiguration config = new ConnectionConfiguration(host, 5222);
XMPPConnection connection = new XMPPConnection(config);
connection.connect();
connection.login(user_name, password);
这里的host是配置openfire的ip/域名。
【讨论】:
@Harry-我已经阅读了文档,但我没有看到任何关于如何使用 smack 和 openfire...我已经配置了 openfire... @Kuber:只是简单地使用 opefire 和 smack。不需要额外的 jar 文件。但是要使用 gtalk/facebook,您需要 openfire 中的插件。 那么我在哪里编码呢??在 eclipse..我应该在 eclipse 中配置 openfire 吗?? @Kuber:不需要在eclipse中配置openfire。下载 SMACK 罐子。然后只需在代码上方创建一个 java 文件复制/粘贴。替换用户名/主机/密码。运行文件。 那么 openfire 是如何理解的??我的意思是我没有看到任何设置或配置。那么 openfire 是如何知道的??【参考方案3】:在 JSP/Java 中,导入 smack.jar
<%@ page import="org.jivesoftware.smack.*;" %>
将 smack.jar 放入
tomcat/lib
或 你的webapp/WEB-INF/lib
【讨论】:
【参考方案4】:这是一个示例,有助于在 gtalk 上设置状态消息。
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Presence;
public class SmackToGtalk
public static void main(String[] args)
ConnectionConfiguration config = new ConnectionConfiguration(
"talk.google.com", 5222, "google.com");
XMPPConnection connection = new XMPPConnection(config);
Presence presence;
String status;
try
connection.connect();
connection.login("mail_id@gmail.com", "password");
status = "DND";
presence = new Presence(Presence.Type.available, status, 24,
Presence.Mode.available);
while (true)
status = set(status);
presence.setStatus(status);
connection.sendPacket(presence);
Thread.sleep(1000);
catch (Exception e)
e.printStackTrace();
finally
connection.disconnect();
private static String set(String input)
return input.substring(1) + input.charAt(0);
【讨论】:
以上是关于如何在 Openfire 中使用 smack的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Smack 在 XMPP openfire 中了解打字状态
如何在 Android 应用中使用 Smack 从 Openfire 服务器恢复两个用户之间的聊天记录
如何使用 Smack 从 android 客户端获取 openfire 在线注册用户?
我如何在 smack openfire android 中监听传入的订阅请求