openfire 版本3.6.4
关于插件开发的基本信息,可以参考其自带的文档页plugin-dev-guide.html
中文翻译传送门http://www.360doc.com/content/10/0707/15/1332348_37445649.shtml
实现功能,客户端发送一个IQ包含内容的节给服务器,服务器取得内容,然后广播给所有的在线用户
新定义的iq为<iq id="xxx" type="set"><b xmlns="com:message:broadcasts">输入发言内容</b></iq>
服务器端:
建立org.jivesoftware.openfire.handler.IQHandler的实现类
package test.plugin;
import org.dom4j.Element;
import org.jivesoftware.openfire.IQHandlerInfo;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.handler.IQHandler;
import org.xmpp.packet.IQ;
public class BroadcastsIQ extends IQHandler {
private IQHandlerInfo info;
public BroadcastsIQ() {
super("用户广播模块");
info = new IQHandlerInfo("b", "com:message:broadcasts");
}
@Override
public IQHandlerInfo getInfo() {
return info;
}
@Override
public IQ handleIQ(IQ packet) throws UnauthorizedException {
Element iq = packet.getElement();
Element b = iq.element("b");
String text = b.getText();
XMPPServer.getInstance().getSessionManager().sendServerMessage(null, text);//广播信息
return null;
}
}
建立org.jivesoftware.openfire.container.Plugin的实现类
package test.plugin;
import java.io.File;
import java.util.List;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.handler.IQHandler;
public class MyPlugin implements Plugin {
private IQHandler iQHandler;
@Override
public void destroyPlugin() {
XMPPServer.getInstance().getIQRouter().removeHandler(iQHandler);
System.out.println("插件停止成功");
}
@Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
iQHandler = new BroadcastsIQ();
XMPPServer.getInstance().getIQRouter().addHandler(iQHandler);
System.out.println("插件运行成功");
}
}
建立plugin.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<class>test.plugin.MyPlugin</class>
<name>Broadcasts messages</name>
<description>This is an Broadcasts messages plugin.</description>
<author>me</author>
<version>1.0</version>
<date>01/01/2011/date>
<url>none</url>
<minServerVersion>3.0.0</minServerVersion>
<licenseType>gpl</licenseType>
<adminconsole>
</adminconsole>
</plugin>
打包为任意名称的jar文件
结构如下
test.jar
--classes
--test
--plugin
--BroadcastsIQ.class
--MyPlugin.class
--META-INF
--MANIFEST.MF
--plugin.xml
然后把打好包的jar文件放到openfire的plugins目录下,openfire会自动加载,观察控制台是否输出 插件运行成功
客户端:
建立org.jivesoftware.smack.packet.IQ的实现类
package test.xmpp;
import org.jivesoftware.smack.packet.IQ;
public class Broadcasts extends IQ {
private String body;
public String getElementName() {
return "b";
}
public String getNamespace() {
return "com:message:broadcasts";
}
public void setBody(String body) {
this.body = body;
}
public String getBody() {
return body;
}
@Override
public String getChildElementXML() {
if(getBody() == null){
throw new RuntimeException("Broadcasts body is empty");
}
StringBuilder sb = new StringBuilder();
sb.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append("\">").append(getBody()).append("</").append(getElementName()).append(">");
return sb.toString();
}
}
然后在程序中
Broadcasts b = new Broadcasts();
b.setBody("测试广播内容");
b.setType(IQ.Type.SET);
conn.sendPacket(b);
实现功能比较简单,算是学习openfire插件开发的开始吧
分享到:
相关推荐
标题中的“openfire插件开发环境搭建”是指学习和配置Openfire服务器以开发自定义插件的过程。Openfire是一款开源的即时通讯服务器,基于XMPP(Extensible Messaging and Presence Protocol)协议,允许用户进行实时...
本教程将引导初学者了解如何开发第一个Openfire插件,从而深入理解Openfire的架构和插件开发流程。 1. **Openfire插件体系结构** Openfire插件是Java编写的独立模块,它们通过Openfire提供的API与核心服务交互。每...
通过这个简单的demo,你可以学习到Openfire插件开发的基本流程和核心概念,为进一步深入开发奠定基础。 总的来说,Openfire插件开发涉及Java编程、XML配置、服务器端API的使用等多个方面,是一个综合性的技术实践。...
本篇文章将深入探讨OpenFire插件开发,旨在帮助开发者从入门到精通,实现移动互联聊天服务器的高效搭建。 首先,了解OpenFire的基本架构至关重要。OpenFire基于XMPP协议,该协议是互联网工程任务组(IETF)定义的一...
通过以上步骤,你就成功创建了一个基础的Openfire插件,可以在此基础上根据需求扩展功能,比如添加数据库交互、Servlet服务或者Web管理界面。 在实际开发中,可能需要对插件进行数据库操作,例如创建新的数据库表、...
开发Openfire插件主要涉及以下几个关键知识点: 1. **XMPP协议**:首先,理解XMPP(Extensible Messaging and Presence Protocol)是必要的,它是IM领域的开放标准,规定了客户端与服务器之间交换数据的格式和流程...
2. **Java编程**:Openfire插件主要用Java编写,因此熟悉Java语言是基础。 3. **Openfire API**:了解并熟练使用Openfire提供的API,可以访问服务器的用户、群组、会话等核心功能。 4. **Ant构建工具**:掌握Ant...
在数据库方面,文档提到了MySQL 5.0版本,这是一个开源的关系型数据库管理系统,用于存储和管理Openfire插件可能需要的大量数据。插件可以利用MySQL数据库来保存用户的配置信息、消息记录等数据。 Openfire服务器...
5. **coherence-cache-config.xml** 和 **tangosol-coherence-override.xml**:这些可能是与Oracle Coherence相关的配置文件,Coherence是一个分布式数据网格解决方案,可能被Openfire插件用来优化数据存储和访问...
总之,Openfire插件开发需要开发者具备Java编程基础、XML配置知识,以及对即时通讯协议的理解。由于国内中文资料有限,学习和实践这一过程可能更具挑战性,但同时也意味着更大的机会和价值。希望这份手写资料能帮助...
通过上述步骤,你已经成功地开发了一个基础的Openfire插件"jackTest"。随着你的需求增加,你可以继续深入学习Openfire的API,实现更复杂的功能,如处理聊天消息、管理用户、集成第三方服务等。记得在开发过程中保持...
在Openfire插件开发中,Servlet插件主要用于处理HTTP相关的请求,如提供Web服务接口、实现RESTful API等。 Openfire中的Servlet插件可以被配置成监听特定的URL路径,当接收到对应的HTTP请求时,插件将被调用执行...
总的来说,Openfire 结合插件提供了一套完整的即时通讯解决方案,涵盖了从基础聊天到高级协作的各种需求。对于企业和开发者来说,它是一个强大且灵活的工具,能够满足不同场景下的沟通需求。通过熟练掌握 Openfire ...
openfire即时通信入门学习资料,openfire是一款java语言开源的即时通信框架,方便扩展,算是比较成熟稳定的即时通信框架,插件也很多,方便框架
本开发文档主要介绍如何快速地开始Openfire插件的开发,并深入理解源码。 一、Openfire 源码部署与打包 1. 准备工作: 开发者需要安装MyEclipse 6.6作为集成开发环境(IDE),同时从官方网站...
2. **Java编程**:Openfire是用Java开发的,因此开发者需要一定的Java基础来理解和定制插件。 3. **数据库操作**:统计信息通常存储在数据库中,需要了解SQL查询和数据库设计。 4. **Web开发**:插件可能包含一个...
标题中的"花了一上午整的一个openfire plugin demo(旨在减少大家摸索时间)"指的是作者创建了一个Openfire插件的示例项目,目的是帮助其他开发者快速理解和入门Openfire插件的开发,节省他们自行探索的时间。...
- 学习 Openfire 插件的结构和生命周期,这包括 `PluginActivator` 类,它是插件的核心,负责初始化和销毁插件。 - 使用 Openfire 提供的 API 进行开发,如用户管理、群组操作、会话管理和事件监听等。 - 测试...
《OpenFire深入浅出》这本书是关于开源即时通讯服务器OpenFire的权威指南,它涵盖了OpenFire的各个方面,从基础安装到高级配置,旨在帮助读者全面理解并熟练掌握OpenFire的使用和管理。OpenFire是一款基于Java开发的...