Openfire服务器端推送消息到客户端

本文介绍了一个基于OpenFire的插件SendFileServlet,该插件通过HTTP接口实现XMPP消息发送功能。它实现了Servlet接口及XMPP组件接口,允许外部系统通过HTTP请求发送消息到XMPP网络。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.cvte.sendfile.openfire.plugin;

/**
 * com.hzaccp.sendmsg.plugin.SendMsgServlet
 * */

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jivesoftware.admin.AuthCheckFilter;
import org.jivesoftware.smackx.filetransfer.FileTransferManager;
import org.xmpp.component.Component;
import org.xmpp.component.ComponentException;
import org.xmpp.component.ComponentManager;
import org.xmpp.component.ComponentManagerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.Message;
import org.xmpp.packet.Packet;

public class SendFileServlet extends HttpServlet implements Component {
	private static final long serialVersionUID = -5404916983906926869L;

	private static final String SERVICE_NAME = "sendMassg/sendservlet";//服务名
	private ComponentManager componentManager;//组件管理
	private static final String COMPONENTNAME = "sendservlet";//组件名
	private static final String domain = "@cvt1397";//服务器域名

	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);

		//给验证器添加排除的路径
		AuthCheckFilter.addExclude(SERVICE_NAME);
		System.out.println("aaaaaaaaaa");
		//注册组件
		componentManager = ComponentManagerFactory.getComponentManager();
		try {
			componentManager.addComponent(COMPONENTNAME, this);
		} catch (Exception err) {
			err.printStackTrace();
		}
	}

	/**
	 * servlet的get方法,在这里发送信息
	 * */
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			String massg=request.getParameter("massg");
			//构建信息
			Message msg = new Message();
			msg.setBody(massg);
			msg.setFrom("cc" + domain);//发信人
			msg.setTo("aa" + domain);//接收人
			msg.setType(Message.Type.chat);//为聊天信息

			componentManager.sendPacket(this, msg);//发关
			
			
		} catch (ComponentException err) {
			err.printStackTrace();
		}

		response.setContentType("text/html;setchar=UTF-8");
		PrintWriter out = new PrintWriter(response.getOutputStream());
		out.print("GET Methodx");
		out.flush();
	}

	/**
	 * servlet的post方法,直接调用get方法
	 * */
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

	@Override
	public void destroy() {
		super.destroy();
		if (componentManager != null) {
			try {
				componentManager.removeComponent(COMPONENTNAME);
			} catch (Exception err) {
				err.printStackTrace();
			}
		}
		componentManager = null;
		AuthCheckFilter.addExclude(SERVICE_NAME);
	}

	@Override
	public String getDescription() {
		return "no Description..";
	}

	@Override
	public String getName() {
		return COMPONENTNAME;
	}

	@Override
	public void initialize(JID jid, ComponentManager comManager) throws ComponentException {

	}

	@Override
	public void processPacket(Packet arg0) {

	}

	@Override
	public void shutdown() {
	}

	@Override
	public void start() {
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值