`
sd8089730
  • 浏览: 259392 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Openfire 模拟发送虚拟在线状态

 
阅读更多
public String SendPresence(String from, String to, String type,String Status) {
		String domain = JiveGlobals.getProperty("xmpp.domain");
		StringBuffer result = new StringBuffer();
		result.append("<?xml version='1.0' encoding='UTF-8'?>");
		result.append("<SendPresence>");
		result.append("<Presence>");
		result.append("<From>" + from + "</From>");
		result.append("<To>" + to + "</To>");
		result.append("<msg>" + type + "</msg>");
		result.append("<Domain>" + domain + "</Domain>");
		result.append("</Presence>");
		result.append("<result>");
		XMPPServer server = XMPPServer.getInstance();
		SessionManager sessionManager = server.getSessionManager();
		
		PresenceRouter presenceRouter=server.getPresenceRouter();
		Presence presence = new Presence();
		presence.setFrom(from);
		presence.setTo(to+"@"+domain);
		//空闲  在线
		presence.setStatus(Status);
		if("0".equals(type)){
			//聊天框上面的状态
			presence.setShow(Presence.Show.away);
		}else{
			presence.setShow(Presence.Show.chat);
		}
		
		result.append("1");
		try {
			presenceRouter.route(presence);
			for (ClientSession cs : sessionManager.getSessions()) {
				cs.process(new NovonOpenfireStatusIQ(1, presence.getStatus(),
						cs.getAddress(), presence.getFrom()));
	}
		} catch (Exception e) {
			Log.error("WebService SendPresence:" + e);
			result.append("0");
		}
		result.append("</result>");
		result.append("</SendPresence>");
		return result.toString();
	}

 其中 NovonOpenfireStatusIQ  定义为 如下

import jit.base.dom.common.ElementName;
import jit.base.dom.common.NameSpace;
import jit.base.dom.status.StatusNode;
import jit.base.dom.status.StatusRoot;

import org.dom4j.Element;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;

public class NovonOpenfireStatusIQ extends IQ {

	public NovonOpenfireStatusIQ(int available, String status, JID to, JID from) {
		this.setTo(to);
		this.setFrom(from);
		init(available, status);
	}

		void init(int available, String status) {
		Element childElement;
		childElement = setChildElement(ElementName.PRESENCECHANGED, NameSpace.STATUS_CHANGED);
		StatusRoot sroot = new StatusRoot();
		StatusNode statusNode = new StatusNode(getFrom().toString(), available, status);
		sroot.add(statusNode);
		childElement.add(sroot.getXml());
	}
}

 

分享到:
评论

相关推荐

    基于openfire的web在线聊天源码

    【基于openfire的web在线聊天源码】是一个实现网页端即时通讯系统的开源项目,它利用了Openfire服务器作为后台支持,提供了丰富的功能,包括联系人分组、群聊、在线状态修改、群成员邀请、设置群管理员以及踢人等,...

    基于openfire 仿QQ

    - Openfire是基于XMPP协议的,XMPP是一种基于XML的开放标准,用于即时消息和在线状态服务。它的设计目标是提供一种灵活且可扩展的框架,使得开发者能够轻松构建分布式、安全的即时通讯应用。 2. **Android客户端...

    OpenFire所有在线用户

    这指的是OpenFire服务器上的功能,它能够追踪并显示当前处于在线状态的用户。通过服务器的插件机制,OpenFire提供了获取所有在线用户的能力。这些用户可能分布在不同的聊天室、群组或进行私人对话。 描述中提到,...

    openfire发送即时消息

    安装openfire的详细过程,手把手的教你,

    openfire获取所有在线用户插件

    自己写的获取所有在线用户的openfire插件,直接上传到openfire服务器即可使用,访问路径为host:port/plugins/onlines/listall

    原创openfire插件(发送在线消息、离线消息)

    目前研究插件的还比较少,简单做一下学习总结。详细介绍请看我的blog:http://hi.baidu.com/jyleon/blog/item/5a6627dd7fc4dbd18d1029bf.html

    openfire聊天Smack示例

    Smack库是Java开发者与XMPP服务器通信的主要工具,它支持XMPP的核心功能,包括登录、发送和接收消息、建立和管理联系人、以及处理在线状态等。Smack库不仅易于使用,而且拥有丰富的API,可以方便地进行定制和扩展。 ...

    接受ActiveMQ信息,通过openfire公告发送给指定用户

    在这个场景中,我们关注的是如何利用ActiveMQ接收消息,然后通过Openfire将这些消息以公告的形式发送给特定用户。我们将详细探讨这两个组件以及它们之间的交互。 ActiveMQ是Apache软件基金会开发的一款Java消息服务...

    通过http方式,向openfire客户端发信息(非XMPP协议)

    4. **消息处理**:在服务器端,插件接收到HTTP请求后,解析参数,然后使用Openfire的内部API或SMACK库(一个XMPP客户端库)模拟XMPP消息发送流程。 5. **错误处理**:返回适当的HTTP状态码和响应内容,以便客户端...

    openfire记录在线统计人数插件

    6. **警报设置**:当在线用户数量超过预设阈值时,插件可以发送通知给管理员,帮助及时调整服务器资源或采取应对措施。 7. **集成第三方服务**:有些插件还可以与第三方统计平台(如Google Analytics)集成,将在线...

    用flash+xiff+openfire 实现网页端接收推送消息

    标题中的“用flash+xiff+openfire 实现网页端接收推送消息”指的是一种技术...总之,这个技术组合实现了基于Flash的网页端即时消息推送,通过XIFF库实现与Openfire服务器的XMPP通信,为用户提供实时的在线聊天体验。

    agsxmpp与openfire服务器通讯

    4. **订阅和发布在线状态**:agsxmpp会订阅其他用户的状态,并可以发布自己的在线状态。 三、agsxmpp.dll修复登录问题 1. **网络问题**:检查网络连接是否正常,确保agsxmpp能够连接到Openfire服务器。 2. **认证...

    Openfire安装配置手册

    Openfire安装配置手册 Openfire是一个基于XMPP协议的即时通讯服务器,提供了强大的聊天功能和插件架构。本手册将指导您搭建开发环境,安装和配置Openfire服务器。 一、 搭建开发环境 要搭建开发环境,需要安装...

    openfire聊天推送

    Openfire的API提供了与服务器交互的能力,开发者可以通过API来创建、管理用户账号,发送和接收消息,以及处理在线状态等。在开发过程中,开发者可以利用这些接口构建自定义的客户端或者服务端应用,以满足特定的需求...

    openfire在线用户插件

    对Openfire进行扩展,支持在线指定聊天室和全部在线人员的查看。

    openfire red5插件 sparkweb源码

    **Openfire、Red5与SparkWeb插件** Openfire是一款开源的即时通讯(IM)服务器,基于XMPP协议,提供实时、双向通信服务。它使用Java编写,易于部署和管理,支持多种客户端,包括Web、桌面应用等。Openfire的核心...

    OpenFire插件开发从入门到精通

    OpenFire基于XMPP协议,该协议是互联网工程任务组(IETF)定义的一种开放标准,用于实现即时消息和在线状态的交换。XMPP允许开发者创建跨平台、可扩展的通信系统。OpenFire作为XMPP服务器,负责处理客户端的连接、...

    openfire webchat开发包

    1. **XMPP协议**:XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,用于即时通讯和在线状态信息交换。Openfire作为XMPP服务器,负责处理和路由这些通信。 2. **Openfire服务器**:...

    openfire+asmack中文api+androidDemo

    ASMACK使得Android开发者可以方便地集成XMPP功能,如发送和接收消息、处理在线状态等。`Smack帮助文档中文版.rar`包含的文档将帮助开发者理解如何在Android应用中使用ASMACK,避免因兼容性问题而带来的困扰。 **...

    即时通信openfire功能代码

    3. 实时状态:用户可以设置自己的在线状态,如在线、离线、忙碌等,他人可直观了解对方的实时在线情况。 4. 私人消息:Openfire支持一对一的私人聊天,包括文本、表情、文件传输等。 5. 集成与扩展:Openfire具有...

Global site tag (gtag.js) - Google Analytics