`
zhuyx808
  • 浏览: 122894 次
  • 性别: Icon_minigender_1
  • 来自: 快来看~天上米有灰机
社区版块
存档分类
最新评论

OpenFire客户端编程示例

    博客分类:
  • xmpp
阅读更多
import java.util.Collection;
 
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;
 
public class SimpleClient {
 
    /** Server name */
    public static final String SERVER_NAME = "localhost";
    /** Server port */
    public static final int SERVER_PORT = 5222; // as you can see in Admin
                                                // Console properties
 
    /** Client name - for login */
    private final String clientName;
    /** Client password - for login*/
    private final String clientPassword;
    /** Client color - for writing in color */
    private final String clientColor;
    /** Chat friend */
    private final String friendName;
 
    /**
     * Constrcuts a new SimpleClient
     * @param clientName0 -
     * @param clientPassword0 -
     * @param clientColor0 -
     * @param friendName0 -
     */
    public SimpleClient(String clientName0, String clientPassword0, String clientColor0, String friendName0) {
        super();
        this.clientName = clientName0;
        this.clientPassword = clientPassword0;
        this.clientColor = clientColor0;
        this.friendName = friendName0;
    }
 
    /**
     * Main process.
     */
    public void run() {
        try {
            this.runImpl();
        } catch (XMPPException e) {
            System.err.println("Exception: " + e);
        }
 
    }
 
    private void runImpl() throws XMPPException {
            XMPPConnection.DEBUG_ENABLED = true;
 
            /*
             * Configuration
             */
            final ConnectionConfiguration config = new ConnectionConfiguration(
                    SimpleClient.SERVER_NAME, SimpleClient.SERVER_PORT);
            config
                    .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
            config.setCompressionEnabled(false);
 
 
            /*
             * Open Connection
             */
            final XMPPConnection connection = new XMPPConnection(config);
            connection.connect();
            connection.login(this.clientName, this.clientPassword);
 
            /*
             * Chat
             */
            final MessageListener messageListner = new SimpleMessageListner();
            final Chat chat = connection.getChatManager().createChat(this.friendName, messageListner);
            final java.util.Date date = new java.util.Date(System.currentTimeMillis());
            final String msgSent = " [sent by " + this.clientName + ", at " + date.toString() + "]";
            final Message newMessage = new Message();
            newMessage.setBody("Howdy (colored)!" + msgSent);
            newMessage.setProperty("favoriteColor", this.clientColor);
            chat.sendMessage(newMessage);
            chat.sendMessage("Howdy!" + msgSent);
 
            /*
             * Roster
             */
            final Roster roster = connection.getRoster();
            // this is already the default Mode but added just for the example
            Roster
                    .setDefaultSubscriptionMode(Roster.SubscriptionMode.accept_all);
            roster.createEntry(this.friendName, "", null);
 
            this.presenceStatus(roster, "unknown@someone");
            this.presenceStatus(roster, this.friendName);
 
            final Collection<RosterEntry> entries = roster.getEntries();
            for (RosterEntry entry : entries) {
                System.out.println("RosterEntry " + entry);
            }
 
            final RosterListener rosterListener = new SimpleRosterListner();
            roster.addRosterListener(rosterListener);
 
            /*
             * End connection
             */
            connection.disconnect();
    }
 
    private void presenceStatus(final Roster roster, String user) {
        final Presence presence = roster.getPresence(user);
        final String response = presence == null ? "Not around" : presence.getStatus();
        System.out.println("Presence of '" + user + "': " + response);
    }
 
    /**
     *
     * @author some
     *
     */
    private class SimpleMessageListner implements MessageListener {
            public void processMessage(Chat chat, Message message) {
                System.out.println("Received message: "
                        + message.getBody());
            }
    }
 
    /**
     *
     * @author some
     *
     */
    private class SimpleRosterListner implements RosterListener {
        // Ignored events
        public void entriesAdded(Collection<String> addresses) {
        }
 
        public void entriesDeleted(Collection<String> addresses) {
        }
 
        public void entriesUpdated(Collection<String> addresses) {
        }
 
        public void presenceChanged(Presence presence) {
            System.out.println("Presence changed: "
                    + presence.getFrom() + " " + presence);
        }
 
    }
 
}
分享到:
评论
2 楼 zhuyx808 2011-08-07  
yangting_lisa 写道
这个程序我测试出来有问题,希望你可以帮组我

有啥问题可以直接说,我们一起研究研究
1 楼 yangting_lisa 2011-07-28  
这个程序我测试出来有问题,希望你可以帮组我

相关推荐

    android 基于openfire服务器搭建的xmpp即时聊天客户端

    综上所述,基于Openfire的Android即时聊天客户端开发是一个涉及XMPP协议、Openfire服务器配置、ASMACK库应用和Android客户端编程的综合过程。通过掌握这些关键技术,开发者能够创建出功能完备、用户体验良好的即时...

    基于smack连接openfire服务器的例子-JAVA

    本文将深入探讨如何使用Smack库,一个Java实现的XMPP客户端库,来连接到Openfire服务器并进行交互。Smack简化了与XMPP服务器的通信,提供了丰富的API来处理用户认证、会话管理、消息发送和接收、以及用户状态等。 ...

    asmack连接openfire测试

    【asmack连接Openfire测试】是针对XMPP(Extensible Messaging and Presence Protocol)协议实现的一种客户端连接示例,主要用于教初学者如何使用asmack库与Openfire服务器进行交互。Openfire是一款开源、基于XMPP...

    openfire相关代码

    在Java中,连接Openfire服务器通常会使用Smack库,这是一个流行的Java XMPP客户端库。连接过程涉及以下步骤: 1. **初始化连接**:创建`XMPPTCPConnectionConfiguration`对象,设置服务器地址、端口、用户名和密码...

    IOS openfire demo

    描述中的"IOS openfire demo"多次重复,暗示这是一个关于如何在iOS设备上实现Openfire功能的示例应用。可能包含了集成Openfire服务、创建IM功能、以及如何进行基本操作的演示。 **标签解析:** 标签同样为"IOS ...

    基于openfire的安卓聊天软件

    在Android端,开发者通常需要创建一个定制的IM客户端来连接到Openfire服务器。这个基于Openfire的Android聊天软件,名为MyEChat,包含了以下关键功能: 1. **注册**:用户可以创建新账户,通常涉及输入用户名、密码...

    OpenFire所有在线用户

    5. **API调用**:使用HTTP客户端工具(如Postman)或编程语言的HTTP库,向“127.0.0.1:8080/plugins/onlineuser/getallusers”发送GET请求,查看或测试返回结果。 6. **安全与性能**:在生产环境中,确保调用API的...

    openfire+asmack中文api+androidDemo

    **ASMACK** 是Smack库的Android优化版本,Smack是一个开源的XMPP客户端库,用于Java环境。ASMACK使得Android开发者可以方便地集成XMPP功能,如发送和接收消息、处理在线状态等。`Smack帮助文档中文版.rar`包含的文档...

    openfire服务器开发插件的简单demo

    总的来说,Openfire插件开发涉及Java编程、XML配置、服务器端API的使用等多个方面,是一个综合性的技术实践。通过不断学习和实践,你将能够创建出满足特定需求的Openfire插件,丰富和拓展Openfire的功能。

    flex的xiff访问openfire服务器的demo

    Flex是Adobe公司开发的一种开源框架,主要用于构建富互联网应用程序(RIA)。它基于ActionScript语言,提供了丰富的用户...通过这个示例,开发者不仅可以学习到基础的Flex编程技巧,还能了解到即时通讯领域的核心技术。

    Android AdXmpp(Openfire+asmack+spark)即时通信.zip

    3. **Spark**:Spark是一款流行的XMPP客户端,通常用于桌面环境,但这里可能是用作示例或参考。Spark提供了直观的用户界面,支持聊天、文件共享、音视频通话等功能。在Android AdXmpp项目中,Spark可能被用来作为...

    openfire-red5-spark-rtmps-required-files

    "apache-virtual-host-example.txt"可能提供Apache虚拟主机配置示例,帮助在多域名环境中部署Openfire。最后,"openfire-https-8443-edited-source.zip"和"red5-plugin-edited-sources"是源代码的修改版本,表明已经...

    openfireDemo

    【标题】"openfireDemo" 是一个基于ASMACK库的Android客户端示例应用,它展示了如何与Openfire服务器进行通信。Openfire是一款开源、实时协作(RTC)服务器,使用XMPP(可扩展消息处理和 Presence 协议)作为其基础...

    安卓Android源码——AdXmpp(Openfire+asmack+spark).zip

    总结来说,AdXmpp项目提供了一个Android平台上实现XMPP通信的完整示例,通过结合Openfire服务器、asmack库和Spark组件,开发者能够快速搭建起一个功能完善的即时通讯应用。这个项目的源码对于学习XMPP协议、Android...

    Android+smack4.1.4+openfire demo

    这个示例代码可以作为Android即时通讯应用开发的起点,帮助开发者快速理解和实践XMPP协议及相关的Android编程技巧。在实际项目中,你可能还需要考虑性能优化、离线消息处理、推送通知等更多复杂情况。

    openfire中间件

    Openfire中间件是一种基于XMPP(Extensible Messaging and ...无论是对于企业内部沟通还是社交应用,Openfire和JSJaC都是强大的工具,它们提供了一种灵活、可扩展的方式来实现XMPP协议的客户端和服务器之间的通信。

    简易微信客户端和服务器源码

    这两个PNG文件可能是客户端界面中使用的图标或者示例图片,例如登录按钮、用户头像等。 7. **JavaApk源码说明.txt**: 这个文件很可能是对项目源代码的简要说明,包括编译和运行步骤、依赖库的介绍,或者是代码...

    Android应用源码之AdXmpp(Openfire+asmack+spark)-IT计算机-毕业设计.zip

    本项目"AdXmpp"是一个基于Android平台的源码示例,主要涉及到Openfire服务器、Asmack库以及Spark客户端的集成应用,特别适用于毕业设计和移动开发的学习。下面将对这个项目进行深入的解析。 首先,AdXmpp的核心是...

    android聊天客户端

    Openfire是一款开源的、基于Java的Xmpp服务器,它提供了一个易于管理和配置的Web界面,支持多种平台的客户端连接。 在Android客户端方面,我们将依赖Asmack库。Asmack是专门为Android定制的Xmpp客户端库,它实现了...

    Openfire Control:简单PHP类,以神奇的Openfire聊天服务器为例。-开源

    3. **XML-RPC**或**HTTP POST**:Openfire的API可能是基于这两种技术之一,它们允许客户端与服务器交换结构化的数据,实现远程过程调用。 4. **Openfire API**:理解Openfire提供的API接口和方法,是有效使用...

Global site tag (gtag.js) - Google Analytics