加入以下类:

这个是xml格式的,解析时可以将xml转成map,参数可自由定义

import org.jivesoftware.smack.packet.PacketExtension;

/**
* 为Message扩展信息
*/
public class ChatInfo implements PacketExtension{ //元素名称小写,便于xml转map时取值
//聊天信息元素名称
private static String elementName = "chatinfo";
//病例id元素名称
private static String caseIdElement = "caseid";
//消息类型:1文字2语音3图片4视频5就医建议
private static String zTypeElement = "ztype";
//发送人身份:1医生2患者
private static String identityElement = "identity";
//长度
private static String msglengthElement = "msglength";
//主键
private static String zidElement = "zid"; //发送人id
private static String senderIdElement = "senderid"; //接收人id
private static String sendeeIdElement = "sendeeid"; //极光推送接收人
private static String tagElement = "tag"; //病例id元素值
private String caseId;
//元素值
private String zType;
//元素值
private String identity;
//长度
private String msglength;
//主键
private String zid; private String senderid; private String sendeeid; private String tag; @Override
public String getElementName() {
return elementName;
} /**
* 返回扩展的xml字符串
* 此字符串作为message元素的子元素
*/
@Override
public String toXML() {
StringBuilder sb = new StringBuilder(); sb.append("<");
sb.append(elementName);
sb.append(">"); sb.append("<");
sb.append(caseIdElement);
sb.append(">");
sb.append(caseId);
sb.append("</");
sb.append(caseIdElement);
sb.append(">"); sb.append("<");
sb.append(zTypeElement);
sb.append(">");
sb.append(zType);
sb.append("</");
sb.append(zTypeElement);
sb.append(">"); sb.append("<");
sb.append(identityElement);
sb.append(">");
sb.append(identity);
sb.append("</");
sb.append(identityElement);
sb.append(">"); sb.append("<");
sb.append(msglengthElement);
sb.append(">");
sb.append(msglength);
sb.append("</");
sb.append(msglengthElement);
sb.append(">"); sb.append("<");
sb.append(zidElement);
sb.append(">");
sb.append(zid);
sb.append("</");
sb.append(zidElement);
sb.append(">"); sb.append("<");
sb.append(senderIdElement);
sb.append(">");
sb.append(senderid);
sb.append("</");
sb.append(senderIdElement);
sb.append(">"); sb.append("<");
sb.append(sendeeIdElement);
sb.append(">");
sb.append(sendeeid);
sb.append("</");
sb.append(sendeeIdElement);
sb.append(">"); sb.append("<");
sb.append(tagElement);
sb.append(">");
sb.append(tag);
sb.append("</");
sb.append(tagElement);
sb.append(">"); sb.append("</");
sb.append(elementName);
sb.append(">"); return sb.toString();
} public String getCaseId() {
return caseId;
} public void setCaseId(String caseId) {
this.caseId = caseId;
} public String getzType() {
return zType;
} public void setzType(String zType) {
this.zType = zType;
} public String getIdentity() {
return identity;
} public void setIdentity(String identity) {
this.identity = identity;
} @Override
public String getNamespace() {
return "";
} public String getMsglength() {
return msglength;
} public void setMsglength(String msglength) {
this.msglength = msglength;
} public String getZid() {
return zid;
} public void setZid(String zid) {
this.zid = zid;
} public String getSenderid() {
return senderid;
} public void setSenderid(String senderid) {
this.senderid = senderid;
} public String getSendeeid() {
return sendeeid;
} public void setSendeeid(String sendeeid) {
this.sendeeid = sendeeid;
} public String getTag() {
return tag;
} public void setTag(String tag) {
this.tag = tag;
}

消息发送时将自定义的消息带上(示例用的是smack)

public static void SendMsg(String username, String pass, String content, String toUser, String type, String caseId, String identity, String filePath, String realPath
, String senderId, String sendeeId
) throws XMPPException {
Connection con = login(username, pass);
Chat mychat = con.getChatManager()
.createChat(toUser + "@" + "192.168.1.254", // 接收端的JID,JID是要加域的 zsmy-of-test
new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
Constant.MY_LOG.debug("收到信息:" + messageBody + " " + message.getFrom());
}
}); Message msg = new Message();
ChatInfo chatInfo = new ChatInfo();
chatInfo.setCaseId(caseId);
chatInfo.setIdentity(identity);
chatInfo.setzType(type);
chatInfo.setSenderid(senderId);
chatInfo.setSendeeid(sendeeId);
if ("3".equals(type)) {
chatInfo.setMsglength("0");
msg.setBody(filePath);
} else {
chatInfo.setMsglength(content.length() + "");
msg.setBody(content);
// mychat.sendMessage(content);
}
msg.addExtension(chatInfo); // 添加扩展内容
mychat.sendMessage(msg);
// con.disconnect(); // 断开连接
}

openfire自定义发送消息的更多相关文章

  1. iOS自定义发送消息输入框

    简单的封装了一个,免得麻烦直接初始化就可以用了 ,有其他需求该里面参数就行了 WJEasyInputTextView.h , CGRectGetHeight([UIScreen mainScreen] ...

  2. Openfire 单人聊天和多人聊天(发送消息、接收消息)

    Openfire 单人聊天和多人聊天(发送消息.接收消息) 一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFrie ...

  3. openfire广播broadcast插件怎么发送消息给所有用户(包括在线和离线)

    openfire广播broadcast插件怎么发送消息给所有用户(包括在线和离线): 打开openfire管理界面,找到服务器系统属性,添加一个属性(属性名:plugin.broadcast.all2 ...

  4. 钉钉机器人集成Jenkins推送消息模板自定义发送报告

    一.由于公司同样也使用了钉钉.那么在做Jenkins集成自动化部署的时候,也是可以集成钉钉的. 那种Jenkins下载钉钉插件集成,简单设置就可以完成了.我们今天要做的是,定制化的发送消息. 钉钉推送 ...

  5. openfire Android 学习(四)----单人聊天和多人聊天(发送消息、接收消息)

    一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFriendChat()获取 [java] view plainco ...

  6. 自定义WM_NOTIFY消息

    自定义WM_NOTIFY消息 习惯了用自定义用户消息进行各种状态的通知,特别是子窗口与父窗口之间的交互.但ON_MESSAGE没有控件ID的限制,如果有多个子窗口发送同一个消息给父窗口时,父窗口就不知 ...

  7. Xmpp学习之Smack发送消息JID变乱码

    Xmpp学习之Smack发送消息JID变乱码 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6947723 ...

  8. log4j2发送消息至Kafka

    title: 自定义log4j2发送日志到Kafka tags: log4j2,kafka 为了给公司的大数据平台提供各项目组的日志,而又使各项目组在改动上无感知.做了一番调研后才发现log4j2默认 ...

  9. Spring-boot JMS 发送消息慢的问题解决

    1:在<ActiveMQ 基于zookeeper的主从(levelDB Master/Slave)搭建以及Spring-boot下使用>(http://www.cnblogs.com/ys ...

随机推荐

  1. CSS原生布局方式

    前言 网页原生布局的方法其实网上有很多,大概为Flow(流动布局模型).Float(浮动布局模型).Layer(层级布局模型).<!--more--> Flow布局 流动布局模型其实就是默 ...

  2. C++11——Use auto keyword in C++11

    版权声明:本文系原创,转载请注明来源. Compile your program with: g++ -std=c++ -o target_name filen_ame.cpp or: g++ -st ...

  3. MySQL数据库分表分区(一)(转)

    面对当今大数据存储,设想当mysql中一个表的总记录超过1000W,会出现性能的大幅度下降吗? 答案是肯定的,一个表的总记录超过1000W,在操作系统层面检索也是效率非常低的   解决方案: 目前针对 ...

  4. mysql:视图、触发器、事务、存储、函数、流程控制

    阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 回到顶部 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只 ...

  5. hdu 4496(并查集逆向添边)

    D-City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Subm ...

  6. hive的窗口函数1

    Hive中提供了越来越多的分析函数,用于完成负责的统计分析.抽时间将所有的分析窗口函数理一遍,将陆续发布.今天先看几个基础的,SUM.AVG.MIN.MAX.用于实现分组内所有和连续累积的统计. 1. ...

  7. Redis安装+密码认证

    redis: 安装: $ wget http://download.redis.io/releases/redis-3.2.7.tar.gz $ tar xzf redis-3.2.7.tar.gz ...

  8. Linux各发行版本及其软件包管理方法

    Linux发行版本有很多,按照使用领域分为桌面系统领域和服务器领域.下面简要介绍如下: 1.Red Hat和Fedora:redhat最早发行的个人版本的Linux,自从Red Hat 9.0版本发布 ...

  9. Vue组件之props,$emit与$on以及slot分发

    组件实例之间的作用域是孤立存在,要让它们之间的信息互通,就必须采用组件的通信方式  props用于父组件向子组件传达信息 1.静态方式 eg: <body> <div id=&quo ...

  10. Ionic-wechat项目边开发边学(二):目录结构,header标签与路由

    之前一直跟Linux驱动打交道,上层应用几乎为零,业余时间也不是很多,所以博客也不会写的非常详细,大家有问题尽管评论哦, 我有空会及时回复! 摘要 上一篇文章主要介绍了ionic的开发环境配置, 以及 ...