`
酷的飞上天空
  • 浏览: 521880 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

openfire 插件入门学习

XML 
阅读更多

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插件开发的开始吧
分享到:
评论
4 楼 huangqinqiang 2014-08-05  
    
3 楼 wll52 2013-11-25  
linux上不支持这种写法怎么办?

public void initializePlugin(PluginManager manager, File pluginDirectory) { 
        System.out.println("Hellow Openfire!"); 
    } 
2 楼 moyanpeng 2013-10-11  
以前找了很久这个,原来这么的简单
1 楼 南部肥肠干饭 2011-09-08  
赞一个
学习了、、、

相关推荐

    openfire插件开发环境搭建

    标题中的“openfire插件开发环境搭建”是指学习和配置Openfire服务器以开发自定义插件的过程。Openfire是一款开源的即时通讯服务器,基于XMPP(Extensible Messaging and Presence Protocol)协议,允许用户进行实时...

    第一个openfire插件源码及说明

    本教程将引导初学者了解如何开发第一个Openfire插件,从而深入理解Openfire的架构和插件开发流程。 1. **Openfire插件体系结构** Openfire插件是Java编写的独立模块,它们通过Openfire提供的API与核心服务交互。每...

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

    通过这个简单的demo,你可以学习到Openfire插件开发的基本流程和核心概念,为进一步深入开发奠定基础。 总的来说,Openfire插件开发涉及Java编程、XML配置、服务器端API的使用等多个方面,是一个综合性的技术实践。...

    OpenFire插件开发从入门到精通

    本篇文章将深入探讨OpenFire插件开发,旨在帮助开发者从入门到精通,实现移动互联聊天服务器的高效搭建。 首先,了解OpenFire的基本架构至关重要。OpenFire基于XMPP协议,该协议是互联网工程任务组(IETF)定义的一...

    编写Openfire开发插件、部署源码

    通过以上步骤,你就成功创建了一个基础的Openfire插件,可以在此基础上根据需求扩展功能,比如添加数据库交互、Servlet服务或者Web管理界面。 在实际开发中,可能需要对插件进行数据库操作,例如创建新的数据库表、...

    openfire 插件开发

    开发Openfire插件主要涉及以下几个关键知识点: 1. **XMPP协议**:首先,理解XMPP(Extensible Messaging and Presence Protocol)是必要的,它是IM领域的开放标准,规定了客户端与服务器之间交换数据的格式和流程...

    openfire插件Demo

    2. **Java编程**:Openfire插件主要用Java编写,因此熟悉Java语言是基础。 3. **Openfire API**:了解并熟练使用Openfire提供的API,可以访问服务器的用户、群组、会话等核心功能。 4. **Ant构建工具**:掌握Ant...

    openfire插件开发.pdf

    在数据库方面,文档提到了MySQL 5.0版本,这是一个开源的关系型数据库管理系统,用于存储和管理Openfire插件可能需要的大量数据。插件可以利用MySQL数据库来保存用户的配置信息、消息记录等数据。 Openfire服务器...

    openfire企业版插件

    5. **coherence-cache-config.xml** 和 **tangosol-coherence-override.xml**:这些可能是与Oracle Coherence相关的配置文件,Coherence是一个分布式数据网格解决方案,可能被Openfire插件用来优化数据存储和访问...

    Openfire 及插件开发 . 国内没有中文资料.我自己手写

    总之,Openfire插件开发需要开发者具备Java编程基础、XML配置知识,以及对即时通讯协议的理解。由于国内中文资料有限,学习和实践这一过程可能更具挑战性,但同时也意味着更大的机会和价值。希望这份手写资料能帮助...

    openfire测试插件

    通过上述步骤,你已经成功地开发了一个基础的Openfire插件"jackTest"。随着你的需求增加,你可以继续深入学习Openfire的API,实现更复杂的功能,如处理聊天消息、管理用户、集成第三方服务等。记得在开发过程中保持...

    openfire servlet插件

    在Openfire插件开发中,Servlet插件主要用于处理HTTP相关的请求,如提供Web服务接口、实现RESTful API等。 Openfire中的Servlet插件可以被配置成监听特定的URL路径,当接收到对应的HTTP请求时,插件将被调用执行...

    openfire+插件

    总的来说,Openfire 结合插件提供了一套完整的即时通讯解决方案,涵盖了从基础聊天到高级协作的各种需求。对于企业和开发者来说,它是一个强大且灵活的工具,能够满足不同场景下的沟通需求。通过熟练掌握 Openfire ...

    openfire即时通信入门资料

    openfire即时通信入门学习资料,openfire是一款java语言开源的即时通信框架,方便扩展,算是比较成熟稳定的即时通信框架,插件也很多,方便框架

    openfire开发文档

    本开发文档主要介绍如何快速地开始Openfire插件的开发,并深入理解源码。 一、Openfire 源码部署与打包 1. 准备工作: 开发者需要安装MyEclipse 6.6作为集成开发环境(IDE),同时从官方网站...

    openfire记录在线统计人数插件

    2. **Java编程**:Openfire是用Java开发的,因此开发者需要一定的Java基础来理解和定制插件。 3. **数据库操作**:统计信息通常存储在数据库中,需要了解SQL查询和数据库设计。 4. **Web开发**:插件可能包含一个...

    花了一上午整的一个openfire plugin demo(旨在减少大家摸索时间)

    标题中的"花了一上午整的一个openfire plugin demo(旨在减少大家摸索时间)"指的是作者创建了一个Openfire插件的示例项目,目的是帮助其他开发者快速理解和入门Openfire插件的开发,节省他们自行探索的时间。...

    openfire服务端实现

    - 学习 Openfire 插件的结构和生命周期,这包括 `PluginActivator` 类,它是插件的核心,负责初始化和销毁插件。 - 使用 Openfire 提供的 API 进行开发,如用户管理、群组操作、会话管理和事件监听等。 - 测试...

    openfire深入浅出

    《OpenFire深入浅出》这本书是关于开源即时通讯服务器OpenFire的权威指南,它涵盖了OpenFire的各个方面,从基础安装到高级配置,旨在帮助读者全面理解并熟练掌握OpenFire的使用和管理。OpenFire是一款基于Java开发的...

Global site tag (gtag.js) - Google Analytics