如何在Openfire中使用Smack

6

你好,我计划开发一个聊天客户端,可以连接到gtalk,facebook等... 我已经决定使用smack API和openfire一起使用。

但我需要一些指导,如何在openfire服务器上使用它...

Openfire是否提供基本UI,如登录框,聊天窗口等...

我需要知道如何插入或使用Smack与Openfire

谢谢:)


1
在浏览网络时,我发现了这个链接,可能会有用:<br/><br/> 即时通讯基础设施 - EthiopionZA
4个回答

4

配置Openfire,然后参考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/域名。


1
@Harry,我已经阅读了文档,但是我没有看到如何在openfire中使用smack的说明...我已经配置好了openfire... - newbie
@Kuber:只需使用Smack与Openfire即可。无需额外的jar文件。但是,如果要使用gtalk / facebook,则需要在Openfire中安装插件。 - Harry Joy
那么我在哪里编写代码呢??在Eclipse中..我应该在Eclipse中配置Openfire吗?? - newbie
@Kuber:在Eclipse中无需配置Openfire。下载SMACK JAR文件,然后只需创建一个Java文件,复制/粘贴上面的代码,替换用户名/主机/密码,运行该文件即可。 - Harry Joy
@Kannappan:host 是 Openfire 运行的机器的 IP 或域名。 - Harry Joy
显示剩余3条评论

3
我决定使用Smack API和Openfire一起使用。但我需要一些指导,以了解如何在Openfire服务器上使用它。
关于Smack API入门怎么样?
OpenFire只是服务器。要进行聊天,您需要一些Jabber / XMPP客户端。您可以使用Spark进行测试。

@Tim-它没有告诉我该如何在openfire中使用它...比如说,我应该插入smack还是有其他步骤? - newbie
当然,您可以按照这里描述的方式设置服务器:http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/install-guide.html。然后,您可以使用某个客户端或Smack API进行连接。 - Tim Büthe
@Tim我已经设置好了Openfire...我想问一下,怎样把它与Smack API连接起来? - newbie
你开始了吗?请发布一些源代码以及你遇到的异常信息... - Tim Büthe
@Tim...我的意思是,我应该将jar文件上传到Openfire的插件目录下吗? - newbie
1
我认为你还没有完全理解这个问题。你需要一些能够理解XMPP协议的服务器。在你的情况下,可以使用OpenFire、GTalk或其他类似的服务器。当客户端连接时,它会按照协议中描述的方式发送XMPP消息,详见维基百科:http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol。到目前为止,实现一个客户端,你可以使用Smack API。使用这个API,你可以使用Java构建和发送上述的XMPP消息。因此,简而言之:Smack API不是OpenFire插件,也不需要在服务器上使用。你只需要用它来构建一个客户端即可。 - Tim Büthe

3

这是一个示例,可以帮助在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);
}
}

1
在 JSP/Java 中,导入 smack.jar。
<%@ page import="org.jivesoftware.smack.*;" %>

将 smack.jar 放置于该位置。
tomcat/lib 

或者你的webapp/WEB-INF/lib


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接