openfire本身有很多比较好的实现框架,如asmack和smack。具体的大家可以上网搜索。因为openfire本身对长连接的支持不是很好,而且相对来说,长连接也挺消耗资源的,但是,又要必须做到及时响应。
这就存在了一些特殊的账户要存在在服务器中。这些账户能实现自动添加好友,自动响应消息和消息回执响应,而消息回执的响应和请求在smack端有很好的封装,而我服务端也按照其xml请求和响应,如下:
PacketExtension packetExtension2 = new PacketExtension(DeliveryReceipt.ELEMENT,DeliveryReceipt.NAMESPACE); // 将消息id返回给发送信息用户 表明已经接收到 packetExtension2.getElement().addAttribute("id", message.getID()); // 回执请求设置 responseMessage.addExtension(packetExtension2); XMPPServer.getInstance().getRoutingTable().routePacket(message.getFrom(), responseMessage, true);
而消息回执的响应相对来说复杂一点,如下:
private static Message packMessageProperty(Message requestMessage , Map<String, String> propertyValue){ String key = null; String value = null; for (Map.Entry<String, String> entry: propertyValue.entrySet()) { key = entry.getKey(); value = entry.getValue(); } Message sendMessage = new Message(); sendMessage.setFrom(requestMessage.getTo()); sendMessage.setTo(requestMessage.getFrom()); sendMessage.setType(org.xmpp.packet.Message.Type.chat); // 封装property数据 PacketExtension packetExtension = new PacketExtension("properties","http://www.jivesoftware.com/xmlns/xmpp/properties"); Element root = packetExtension.getElement(); Element propertyElement = root.addElement("property"); Element nameElement = propertyElement.addElement("name"); Element valueElement = propertyElement.addElement("value"); nameElement.setText(key); valueElement.addAttribute("type", "string"); valueElement.setText(value); sendMessage.addExtension(packetExtension); return sendMessage; }
设置消息回执主要原因有以下几条:
1.查看消息是否发送成功,方便再次发送
2.统计openfire消息的送达率
3.弥补openfire丢包的风险等
相关推荐
openfire服务端openfire 服务端 java linux 即时聊天
NULL 博文链接:https://xrb2008.iteye.com/blog/1972738
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.zip
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现。实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之间的信息发送与接收,监听发送来的好友...
扩展openfire的服务端代码。实现了图片,语音,视频发送,可创建群组。发表签名等功能。可作为android和ios聊天的服务端。
openfire处理消息流程及openfire详细信息
openfire防止消息丢失插件,防止丢包插件
openfire消息、监听、启动流程分析 openfire消息、监听、启动流程分析 openfire消息、监听、启动流程分析
代码很简单,可以用,修改一下配置文件就行了
openfire服务器在进行消息转发时,如果接收者网络断开,服务器检测不到接收者已下线,转发后消息会丢失,为解决消息丢失,有四种解决方案: 1.发送之前“发送心跳” 2.发送之前“发自定义结构” 3.客服端收到消息...
openfire服务端自带jre
openfire服务端
经过了近3天的时间终于搞定了openfire3.9.1源码的部署,因为最新的是3.9.1所以和其他的版本多多少少还是有些区别的! 1、下载源码 官网下载:h
详细整理了openfire服务端所有的表机构
Openfire最主要的功能是实现XMPP服务器,Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送.
Android 基于xmpp协议,smack包,openfire服务端的即时通讯实现
openfire 通过http 协议 添加聊天室 roomservice插件 在openfire后台上传插件 到 服务器->服务器设置->room service-> 打开选择enable 有一个 secretkey 复制出来 然后访问 http://<你的服务器地址>/plugins/...
openfire源码分析资料,本人参与公司openfire修改,以及二次开发,终于找到了比较全面的openfire资料;吐血推荐,是openfire分析,修改,二次开发不可多得的资料。内附详细源码分析以及二次开发的方法还有数据库表...
xmpp协议聊天通讯openfire服务端安装包,exe格式的
安装openfire的详细过程,手把手的教你,