分享

openfire 服务端消息回执添加和响应

 WindySky 2016-02-24

      openfire本身有很多比较好的实现框架,如asmack和smack。具体的大家可以上网搜索。因为openfire本身对长连接的支持不是很好,而且相对来说,长连接也挺消耗资源的,但是,又要必须做到及时响应。

   这就存在了一些特殊的账户要存在在服务器中。这些账户能实现自动添加好友,自动响应消息和消息回执响应,而消息回执的响应和请求在smack端有很好的封装,而我服务端也按照其xml请求和响应,如下:

消息回执请求代码  收藏代码
  1. PacketExtension packetExtension2 = new PacketExtension(DeliveryReceipt.ELEMENT,DeliveryReceipt.NAMESPACE);  
  2. // 将消息id返回给发送信息用户 表明已经接收到  
  3. packetExtension2.getElement().addAttribute("id", message.getID());  
  4. // 回执请求设置  
  5. responseMessage.addExtension(packetExtension2);  
  6. XMPPServer.getInstance().getRoutingTable().routePacket(message.getFrom(), responseMessage, true);  

 

而消息回执的响应相对来说复杂一点,如下:

消息惠子响应代码  收藏代码
  1. private static Message packMessageProperty(Message requestMessage , Map<String, String> propertyValue){  
  2.           
  3.         String key = null;  
  4.         String value = null;  
  5.         for (Map.Entry<String, String> entry: propertyValue.entrySet()) {  
  6.             key = entry.getKey();  
  7.             value = entry.getValue();  
  8.         }  
  9.         Message sendMessage = new Message();  
  10.         sendMessage.setFrom(requestMessage.getTo());  
  11.         sendMessage.setTo(requestMessage.getFrom());  
  12.         sendMessage.setType(org.xmpp.packet.Message.Type.chat);  
  13.         // 封装property数据  
  14.         PacketExtension packetExtension = new PacketExtension("properties","http://www./xmlns/xmpp/properties");  
  15.         Element root = packetExtension.getElement();  
  16.         Element propertyElement = root.addElement("property");  
  17.         Element nameElement = propertyElement.addElement("name");  
  18.         Element valueElement = propertyElement.addElement("value");  
  19.         nameElement.setText(key);  
  20.         valueElement.addAttribute("type", "string");  
  21.         valueElement.setText(value);  
  22.         sendMessage.addExtension(packetExtension);  
  23.         return sendMessage;  
  24.     }  

设置消息回执主要原因有以下几条:

 1.查看消息是否发送成功,方便再次发送

 2.统计openfire消息的送达率

 3.弥补openfire丢包的风险等

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多