Xmpp发送自定义的iq包
因为需要做扩展业务,学习了插件开发,但是客户端的怎么构造packet发消息到服务器插件一直没有搞明白,于是各种百度未果后,准备自己摸索,最开始用的和服务器一样的dom4j构造了一个xml节点,如下:
/**
* 构建iq的扩展包,用于发送用户所在房间的名称。
*/
Document document = DocumentHelper.createDocument();
Element iqe = document.addElement("iq");
iqe.addAttribute("type", "result");
iqe.addAttribute("to", userJid.toFullJID());
iqe.addAttribute("id", IDUtil.getID());
Namespace namespace = new Namespace("", "larson");
Element response = iqe.addElement("wechat");
response.add(namespace);
// 最后发送出去!
IQ iq = new IQ(iqe);
System.out.println("iq " + iq.toXML());
router.route(iq);
但是发现asmack的iq并没有new IQ这个方法,我怎么页new不出,在各种百度提问未果时,我想到了spark的源码,果然在spark的插件包下找到了,哦,原来是自定义的iq包是集成IQ复写里面的方法,然后发送自定义的这个对象来实现的,如下:
import org.jivesoftware.smack.packet.IQ; public class WeChatPacket extends IQ { public static final String ELEMENT_NAME = "wechat"; public static final String NAMESPACE = "wechat"; private String urlStr; private String json; public String getUrlStr() { return urlStr; } public void setUrlStr(String urlStr) { this.urlStr = urlStr; } public String getJson() { return json; } public void setJson(String json) { this.json = json; } @Override public String getChildElementXML() { StringBuffer buf = new StringBuffer(); buf.append("<" + ELEMENT_NAME + " xmlns=\"" + NAMESPACE + "\">"); if (getType() == IQ.Type.GET) { buf.append("<urlStr>").append(urlStr).append("</urlStr>"); buf.append("<json>").append(json).append("</json>"); buf.append(getExtensionsXML()); } buf.append("</" + ELEMENT_NAME + ">"); return buf.toString(); } }
发送的时候直接发送就好了:
private static Packet makeXmppPacket(String urlStr, String json) { WeChatPacket packet = new WeChatPacket(); packet.setJson(json); packet.setUrlStr(urlStr); packet.setType(IQ.Type.SET); return packet; }
特意写个博客出来帮助和我一样在摸索的小伙伴。
尊重原创,转载请注明出处,谢谢。
相关推荐
Flex实现的xmpp消息发送接收,利用xiff插件实现,可以在android、ios等手机运行,也可以直接在ie上运行
smack Message添加自定义节点
在xmpp通信过程中,asmack中提供的Packet组件是IQ,Message,Presence三种: IQ用于查询 Message用于消息传递 Presence用于状态交互 他们都是Packet的子类,实质是用于将消息封装成响应的xml格式来进行数据交换,都...
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现。实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之间的信息发送与接收,监听发送来的好友...
asmack xmpp开发jar包 6 0.8.2版
XMPP JINGLE Jar包 可以实现语音聊天功能
xmpp Android项目源码打包,有三个项目,都比较完整,欢迎大家下载学习;
xmpp Qt源码包 的server搭建
XMPP,iOS版,即时通讯高效代码库!
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.zip
NULL 博文链接:https://javaprince.iteye.com/blog/958446
XMPP中缺省包coherence.jar coherence-work.jar tangosol.jar
经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更...
hipchat (xmpp) - 一个golang包用于与HipChat通信通过XMPP
这些功能 -- 主要是 XML流, 使用 TLS和SASL,以及流的根元素之下的, , 和 <iq/> 子元素 -- 为各种类型的准实时应用提供了一个构造基础, 它可以被放在核心的顶层,使用特定XML名字空间[XML-NAMES]发送特定的应用数据....
XMPP体系架构 XMPP server:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。 功能: 1.会话管理器:负责客户端会话认证,在线状态,用户联系表等 2.数据存储器(XDB):连接数据库系统,保持用户信息、...
1、首家支持聊天室群聊 2、支持和微信一样的... 3、支持发送图片、表情、GIF动画表情等; 4、数据库分库分表,速度极快,界面细节处理优美,bug极少。 5、另有注册用户、用户列表、加好友、好友列表等功能。
c#简单实现xmpp客户端,服务器openfire,可以登录及调试xmpp协议
xmpp协议介绍PPT,详细介绍了XMPP核心协议方方面面