如何在 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 中监听传入的订阅请求

如何使用 smack 和 openfire 获取 IOS 中每个聊天会话的最后一条消息?

Openfire:在android上使用smack向特定人广播消息