加入以下类:

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

  1. import org.jivesoftware.smack.packet.PacketExtension;
  2.  
  3. /**
  4. * 为Message扩展信息
  5. */
  6. public class ChatInfo implements PacketExtension{
  7.  
  8. //元素名称小写,便于xml转map时取值
  9. //聊天信息元素名称
  10. private static String elementName = "chatinfo";
  11. //病例id元素名称
  12. private static String caseIdElement = "caseid";
  13. //消息类型:1文字2语音3图片4视频5就医建议
  14. private static String zTypeElement = "ztype";
  15. //发送人身份:1医生2患者
  16. private static String identityElement = "identity";
  17. //长度
  18. private static String msglengthElement = "msglength";
  19. //主键
  20. private static String zidElement = "zid";
  21.  
  22. //发送人id
  23. private static String senderIdElement = "senderid";
  24.  
  25. //接收人id
  26. private static String sendeeIdElement = "sendeeid";
  27.  
  28. //极光推送接收人
  29. private static String tagElement = "tag";
  30.  
  31. //病例id元素值
  32. private String caseId;
  33. //元素值
  34. private String zType;
  35. //元素值
  36. private String identity;
  37. //长度
  38. private String msglength;
  39. //主键
  40. private String zid;
  41.  
  42. private String senderid;
  43.  
  44. private String sendeeid;
  45.  
  46. private String tag;
  47.  
  48. @Override
  49. public String getElementName() {
  50. return elementName;
  51. }
  52.  
  53. /**
  54. * 返回扩展的xml字符串
  55. * 此字符串作为message元素的子元素
  56. */
  57. @Override
  58. public String toXML() {
  59. StringBuilder sb = new StringBuilder();
  60.  
  61. sb.append("<");
  62. sb.append(elementName);
  63. sb.append(">");
  64.  
  65. sb.append("<");
  66. sb.append(caseIdElement);
  67. sb.append(">");
  68. sb.append(caseId);
  69. sb.append("</");
  70. sb.append(caseIdElement);
  71. sb.append(">");
  72.  
  73. sb.append("<");
  74. sb.append(zTypeElement);
  75. sb.append(">");
  76. sb.append(zType);
  77. sb.append("</");
  78. sb.append(zTypeElement);
  79. sb.append(">");
  80.  
  81. sb.append("<");
  82. sb.append(identityElement);
  83. sb.append(">");
  84. sb.append(identity);
  85. sb.append("</");
  86. sb.append(identityElement);
  87. sb.append(">");
  88.  
  89. sb.append("<");
  90. sb.append(msglengthElement);
  91. sb.append(">");
  92. sb.append(msglength);
  93. sb.append("</");
  94. sb.append(msglengthElement);
  95. sb.append(">");
  96.  
  97. sb.append("<");
  98. sb.append(zidElement);
  99. sb.append(">");
  100. sb.append(zid);
  101. sb.append("</");
  102. sb.append(zidElement);
  103. sb.append(">");
  104.  
  105. sb.append("<");
  106. sb.append(senderIdElement);
  107. sb.append(">");
  108. sb.append(senderid);
  109. sb.append("</");
  110. sb.append(senderIdElement);
  111. sb.append(">");
  112.  
  113. sb.append("<");
  114. sb.append(sendeeIdElement);
  115. sb.append(">");
  116. sb.append(sendeeid);
  117. sb.append("</");
  118. sb.append(sendeeIdElement);
  119. sb.append(">");
  120.  
  121. sb.append("<");
  122. sb.append(tagElement);
  123. sb.append(">");
  124. sb.append(tag);
  125. sb.append("</");
  126. sb.append(tagElement);
  127. sb.append(">");
  128.  
  129. sb.append("</");
  130. sb.append(elementName);
  131. sb.append(">");
  132.  
  133. return sb.toString();
  134. }
  135.  
  136. public String getCaseId() {
  137. return caseId;
  138. }
  139.  
  140. public void setCaseId(String caseId) {
  141. this.caseId = caseId;
  142. }
  143.  
  144. public String getzType() {
  145. return zType;
  146. }
  147.  
  148. public void setzType(String zType) {
  149. this.zType = zType;
  150. }
  151.  
  152. public String getIdentity() {
  153. return identity;
  154. }
  155.  
  156. public void setIdentity(String identity) {
  157. this.identity = identity;
  158. }
  159.  
  160. @Override
  161. public String getNamespace() {
  162. return "";
  163. }
  164.  
  165. public String getMsglength() {
  166. return msglength;
  167. }
  168.  
  169. public void setMsglength(String msglength) {
  170. this.msglength = msglength;
  171. }
  172.  
  173. public String getZid() {
  174. return zid;
  175. }
  176.  
  177. public void setZid(String zid) {
  178. this.zid = zid;
  179. }
  180.  
  181. public String getSenderid() {
  182. return senderid;
  183. }
  184.  
  185. public void setSenderid(String senderid) {
  186. this.senderid = senderid;
  187. }
  188.  
  189. public String getSendeeid() {
  190. return sendeeid;
  191. }
  192.  
  193. public void setSendeeid(String sendeeid) {
  194. this.sendeeid = sendeeid;
  195. }
  196.  
  197. public String getTag() {
  198. return tag;
  199. }
  200.  
  201. public void setTag(String tag) {
  202. this.tag = tag;
  203. }

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

  1. public static void SendMsg(String username, String pass, String content, String toUser, String type, String caseId, String identity, String filePath, String realPath
  2. , String senderId, String sendeeId
  3. ) throws XMPPException {
  4. Connection con = login(username, pass);
  5. Chat mychat = con.getChatManager()
  6. .createChat(toUser + "@" + "192.168.1.254", // 接收端的JID,JID是要加域的 zsmy-of-test
  7. new MessageListener() {
  8. @Override
  9. public void processMessage(Chat chat, Message message) {
  10. String messageBody = message.getBody();
  11. Constant.MY_LOG.debug("收到信息:" + messageBody + " " + message.getFrom());
  12. }
  13. });
  14.  
  15. Message msg = new Message();
  16. ChatInfo chatInfo = new ChatInfo();
  17. chatInfo.setCaseId(caseId);
  18. chatInfo.setIdentity(identity);
  19. chatInfo.setzType(type);
  20. chatInfo.setSenderid(senderId);
  21. chatInfo.setSendeeid(sendeeId);
  22. if ("3".equals(type)) {
  23. chatInfo.setMsglength("0");
  24. msg.setBody(filePath);
  25. } else {
  26. chatInfo.setMsglength(content.length() + "");
  27. msg.setBody(content);
  28. // mychat.sendMessage(content);
  29. }
  30. msg.addExtension(chatInfo); // 添加扩展内容
  31. mychat.sendMessage(msg);
  32. // con.disconnect(); // 断开连接
  33. }

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. java的装饰设计模式

    类似python中的装饰器. 示例: public class Test5 { public static void main(String[] args) { Worker w = new Work ...

  2. 字符串截取,SubString

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAk8AAACYCAIAAAByAZqHAAAYgklEQVR4nO2dL28ku5qHTS4ctuTSQf ...

  3. sql查询语句查询顺序

    一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...

  4. LeetCode Binary Tree PostorderTranversal

    Problem Description Given a binary tree, return the postorder traversal of its nodes' values. For ex ...

  5. 辨析各类web服务器:Apache/Tomcat/Jboss/Nginx/等,还有Nodejs

    先说一下各类服务器能干啥,特点是啥,然后在区分他们的类别. (1)Apache: Apache是指Apache软件基金会的Apache HTTP Server, 它能够接收http请求,然后返回各类资 ...

  6. apche服务器在Window和Linux下常用命令

    1.Window 1.1 启动.重启.停止——方式一(httpd) httpd.exe [-D name] [-d directory] [-f file] [-C "directive&q ...

  7. centos系统服务管理

    系统服务管理工具: chkconfig(所有linux发行版都有),用法很简单,如下: usage:   chkconfig --list [name]          chkconfig --ad ...

  8. 【剑指offer】面试题 9. 用两个栈实现队列

    面试题 9. 用两个栈实现队列 题目描述 题目:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解答过程 import java.util.Stack; publ ...

  9. android studio偏好设置

    1.主题设置,可以选择白色主题及黑色主题 2.代码字体大小 3.生成新的主题 主题命名 4.加入代码时,自动引用库 5.合作菜单生成菜码 6.命名空间设置 字段设置为大写,静态字段设置为小写 SDK设 ...

  10. vue v-bind绑定属性和样式

    这期跟大家分享的,是v-bind指令.它可以往元素的属性中绑定数据,也可以动态地根据数据为元素绑定不同的样式. 绑定属性 最简单的例子,我们有一张图片,需要定义图片的src.我们可以直接在元素的属性里 ...