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);
}
}
}
分享到:
相关推荐
综上所述,基于Openfire的Android即时聊天客户端开发是一个涉及XMPP协议、Openfire服务器配置、ASMACK库应用和Android客户端编程的综合过程。通过掌握这些关键技术,开发者能够创建出功能完备、用户体验良好的即时...
本文将深入探讨如何使用Smack库,一个Java实现的XMPP客户端库,来连接到Openfire服务器并进行交互。Smack简化了与XMPP服务器的通信,提供了丰富的API来处理用户认证、会话管理、消息发送和接收、以及用户状态等。 ...
【asmack连接Openfire测试】是针对XMPP(Extensible Messaging and Presence Protocol)协议实现的一种客户端连接示例,主要用于教初学者如何使用asmack库与Openfire服务器进行交互。Openfire是一款开源、基于XMPP...
在Java中,连接Openfire服务器通常会使用Smack库,这是一个流行的Java XMPP客户端库。连接过程涉及以下步骤: 1. **初始化连接**:创建`XMPPTCPConnectionConfiguration`对象,设置服务器地址、端口、用户名和密码...
描述中的"IOS openfire demo"多次重复,暗示这是一个关于如何在iOS设备上实现Openfire功能的示例应用。可能包含了集成Openfire服务、创建IM功能、以及如何进行基本操作的演示。 **标签解析:** 标签同样为"IOS ...
在Android端,开发者通常需要创建一个定制的IM客户端来连接到Openfire服务器。这个基于Openfire的Android聊天软件,名为MyEChat,包含了以下关键功能: 1. **注册**:用户可以创建新账户,通常涉及输入用户名、密码...
5. **API调用**:使用HTTP客户端工具(如Postman)或编程语言的HTTP库,向“127.0.0.1:8080/plugins/onlineuser/getallusers”发送GET请求,查看或测试返回结果。 6. **安全与性能**:在生产环境中,确保调用API的...
**ASMACK** 是Smack库的Android优化版本,Smack是一个开源的XMPP客户端库,用于Java环境。ASMACK使得Android开发者可以方便地集成XMPP功能,如发送和接收消息、处理在线状态等。`Smack帮助文档中文版.rar`包含的文档...
总的来说,Openfire插件开发涉及Java编程、XML配置、服务器端API的使用等多个方面,是一个综合性的技术实践。通过不断学习和实践,你将能够创建出满足特定需求的Openfire插件,丰富和拓展Openfire的功能。
Flex是Adobe公司开发的一种开源框架,主要用于构建富互联网应用程序(RIA)。它基于ActionScript语言,提供了丰富的用户...通过这个示例,开发者不仅可以学习到基础的Flex编程技巧,还能了解到即时通讯领域的核心技术。
3. **Spark**:Spark是一款流行的XMPP客户端,通常用于桌面环境,但这里可能是用作示例或参考。Spark提供了直观的用户界面,支持聊天、文件共享、音视频通话等功能。在Android AdXmpp项目中,Spark可能被用来作为...
"apache-virtual-host-example.txt"可能提供Apache虚拟主机配置示例,帮助在多域名环境中部署Openfire。最后,"openfire-https-8443-edited-source.zip"和"red5-plugin-edited-sources"是源代码的修改版本,表明已经...
【标题】"openfireDemo" 是一个基于ASMACK库的Android客户端示例应用,它展示了如何与Openfire服务器进行通信。Openfire是一款开源、实时协作(RTC)服务器,使用XMPP(可扩展消息处理和 Presence 协议)作为其基础...
总结来说,AdXmpp项目提供了一个Android平台上实现XMPP通信的完整示例,通过结合Openfire服务器、asmack库和Spark组件,开发者能够快速搭建起一个功能完善的即时通讯应用。这个项目的源码对于学习XMPP协议、Android...
这个示例代码可以作为Android即时通讯应用开发的起点,帮助开发者快速理解和实践XMPP协议及相关的Android编程技巧。在实际项目中,你可能还需要考虑性能优化、离线消息处理、推送通知等更多复杂情况。
Openfire中间件是一种基于XMPP(Extensible Messaging and ...无论是对于企业内部沟通还是社交应用,Openfire和JSJaC都是强大的工具,它们提供了一种灵活、可扩展的方式来实现XMPP协议的客户端和服务器之间的通信。
这两个PNG文件可能是客户端界面中使用的图标或者示例图片,例如登录按钮、用户头像等。 7. **JavaApk源码说明.txt**: 这个文件很可能是对项目源代码的简要说明,包括编译和运行步骤、依赖库的介绍,或者是代码...
本项目"AdXmpp"是一个基于Android平台的源码示例,主要涉及到Openfire服务器、Asmack库以及Spark客户端的集成应用,特别适用于毕业设计和移动开发的学习。下面将对这个项目进行深入的解析。 首先,AdXmpp的核心是...
Openfire是一款开源的、基于Java的Xmpp服务器,它提供了一个易于管理和配置的Web界面,支持多种平台的客户端连接。 在Android客户端方面,我们将依赖Asmack库。Asmack是专门为Android定制的Xmpp客户端库,它实现了...
3. **XML-RPC**或**HTTP POST**:Openfire的API可能是基于这两种技术之一,它们允许客户端与服务器交换结构化的数据,实现远程过程调用。 4. **Openfire API**:理解Openfire提供的API接口和方法,是有效使用...