openfire 优化

项目采用 web + openfire 方式 

所有业务处理都有web项目实现

所有与聊天有关功能由openfire实现

openfire优化两点

1. 登录验证信息从redis中获取 

    修改SASLAuthentication.handle()

              token = StringUtils.decodeBase64(doc.getText().trim());
              if (token == null) {
                token = new byte[0];
              } else {

                //写redis验证相关代码  客户端传过来的密码是 "用户名~密码" 组合 ,

                //查找ASCII 码可知 ~ 就是 7e


                String uid = null;
                try {
                  String hexToken = EncodeUtil.bytes2hexstring(token);

                  hexToken = hexToken.toLowerCase();
                  int pos7E = hexToken.indexOf("7e");
                  uid = hexToken.substring(2, pos7E - 2);
                  String ticket = hexToken.substring(pos7E + 2, hexToken.length());
                  handleTicket(session, uid, ticket);

                } catch (Exception ex) {
                  ex.printStackTrace();
                  try {
                  authenticationFailed(session, Failure.NOT_AUTHORIZED);
                  status = Status.failed;
                  break;
                }

              }

2. 离线消息以及消息记录保存到mongodb中

    修改离线消息存储类OfflineMessageStore.addMessage()

     protected void addMessage(final Message message) {
        if (message == null) {
            return;
        }
       
        if(!shouldStoreMessage(message)) {
            return;
        }
        
        JID recipient = message.getTo();
        String username = recipient.getNode();
        // If the username is null (such as when an anonymous user), don't store.
        if (username == null) {
            return;
        }

        //mongodb存储信息
        MongoStoreManager.getInstance().addObject(new OfflineMessageDoc(message));
                
    }

                                        



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值