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插件开发(plugin sevlet)入门 了解简单示例,有助于快速开发插件。 快速方便地使用build.xml进行ant打包编译
OpenFire插件开发从入门到精通,适用于移动互联聊天服务器搭建。
该资源实现了Openfire插件开发的入门,即实现了对jsp的访问和servlet的访问。主要是目录结构。哈哈,就说这些吧。
描述了第一个插件的开发,适合初学者入门介绍
openfire即时通信入门学习资料,openfire是一款java语言开源的即时通信框架,方便扩展,算是比较成熟稳定的即时通信框架,插件也很多,方便框架
openfire全服在线用户推送插件,离线用户不会收到推送消息,当然也可以在代码的基础上稍作修改就变成一个批量推送插件
目前在网上能找到的最详细的openfire开发资料,包括基于eclipse的开发基础,openfire数据库结构及表的详细说明。openfire插件开发基础。
Openfire补丁该组件包含我们自定义身份验证所需的 openfire 补丁。入门克隆这个 repo git clone git@github.com:onlychoice/openfire_dev.git应用补丁,并将插件添加到 openfire。
Apache Apollo是一个代理服务器,其是在ActiveMQ基础上发展而来的,可以支持STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets 等多种协议。 Apollo允许客户端通过开放的MQTT协议连接。该协议主要是用在资源有限的...
Apache Apollo是一个代理服务器,其是在ActiveMQ基础上发展而来的,可以支持STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets 等多种协议。 Apollo允许客户端通过开放的MQTT协议连接。该协议主要是用在资源有限的...
如意通是深圳如意通科技有限公司历时三年开发的,为企业量身打造的即时通讯软件,以文字、文件、语音、视频、远程控制为通讯基础,融合电子邮件、短信收发、网络电话、网络传真、电话会议、视频会议、网络虚拟办公室...
D3Xmpp 是一个完整的 XMPP 的 Android 的项目服务端使用 openfire 3.9.3客户端使用 ...PS:该项目是本人在学习xmpp过程中总结的一些东西,代码组织凌乱,旨在帮助新入门xmpp学习xmpp的基本使用 标签:D3Xmpp
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...
JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...