openfire中添加好友发送验证消息
来源:互联网 发布:android官方文档 知乎 编辑:程序博客网 时间:2024/06/02 12:47
openfire中添加好友发送验证消息
(2015-01-27 10:34:00)转载▼
标签:
股票
分类: IM研究openfire中添加好友没有提供验证消息的功能,为此,我们对其进行了添加。这个需要服务端和客户端协同配合。 if(packet.toString().contains("urn:rndchina:validationmessage")){ Element element = packet.getElement().element("x"); String body = element.elementText("body"); JID from = packet.getFrom(); String to = packet.getElement().element("query").element("item").attributeValue("jid"); ValidateMessageStore message = new ValidateMessageStore(); message.addOrUpdateMessage(from.getNode(), to, body); } session.process(createSubscribePresence(item.getJid(), session.getAddress().asBareJID(), true)); } else if (item.getRecvStatus() == RosterItem.RECV_UNSUBSCRIBE) { session.process(createSubscribePresence(item.getJid(), session.getAddress().asBareJID(), false)); } if (item.getSubStatus() == RosterItem.SUB_TO || item.getSubStatus() == RosterItem.SUB_BOTH) { presenceManager.probePresence(session.getAddress(), item.getJid()); } public Presence createSubscribePresence(JID senderAddress, JID targetJID, boolean isSubscribe) { Presence presence = new Presence(); presence.setFrom(senderAddress); presence.setTo(targetJID); //判断其有没有验证信息 ValidateMessageStore validateStore = new ValidateMessageStore(); String body = validateStore.getMessage(senderAddress.asBareJID().getNode(),targetJID.asBareJID().toString()); if(body!=null){ ValidationMessage message = new ValidationMessage(body); presence.addExtension(message); } if (isSubscribe) { presence.setType(Presence.Type.subscribe); } else { presence.setType(Presence.Type.unsubscribe); } return presence; }
首先在添加好友时,会发送一个IQ,一个presence。如果好友在线的话会收到presence中携带的信息,而在对方离线的情况下是收不到这个presence中携带的信息。
我们的处理方式是在IQ上同时绑定一个同样的信息。将该信息存入到数据库,同时有助于云端存储。
处理逻辑如下:
一、在IQRosterHandler.java的handleIQ(IQ packet)中对IQ进行操作。
//判断是否含有验证信息
ValidateMessageStore是一个操作数据库的类,很简单不在赘述。
二、在PresenceUpdateHandler.java中的initSession(ClientSession session)中会判断是否有申请添加好友的信息,
if (item.getRecvStatus() == RosterItem.RECV_SUBSCRIBE) {
通过以上代码会发现,如果有未处理的好友申请信息,会给当前用户发送一个presence。我们对createSubscribePresence()方法进行了改进,具体如下:
这样即便对方不在线,下次登录的时候就可以接收到添加好友的验证消息。同时也在服务器进行了相关存储。
阅读全文
0 0
- openfire中添加好友发送验证消息
- 基于Openfire Smack开发即时通讯应用、获取离线消息,发送消息,联系人列表,添加好友(三)
- rails 中添加用户为好友时发送站内消息
- 【openfire添加好友流程】
- openfire 自动添加好友
- openfire 添加好友
- openfire发送离线好友请求
- openfire发送离线好友请求
- 【openfire添加好友流程梳理】
- openfire添加好友流程梳理
- openfire+smack消息发送
- Openfire 好友状态的发送(用户登录)
- asmack在openfire中发送自定义属性、节点的消息
- 转载【openfire添加好友流程梳理】
- openfire--好友管理实现好友添加及分组管理
- openfire-好友管理实现好友添加及分组管理
- 如何解决 您需要添加对方为好友,才能给对方发送会话消息
- "抱歉,无法发起临时会话,您可以 添加对方为好友以发送消息"解决办法
- Axon Framework事件处理
- iOS 环形进度条
- Duilib整体框架
- DUILIB入门简明教程
- vs2013实现duilib结合cef的demo
- openfire中添加好友发送验证消息
- openfire 用户注册过程 服务器端
- 优化openfire服务器提升xmpp 效率的15个方法(原创)
- cocos加载3d精灵不显示,打印台无报错
- 开发创建XMPP“发布订阅”扩展(xmpp pubsub extend)
- openfire 服务端讯息回执添加和响应
- 在openfire中添加消息队列,防止聊天信息丢失方法
- 高德API调研
- openfire连接登陆优化方案