zoukankan      html  css  js  c++  java
  • WEB即时通讯之 XMPP OPENFIRE strophe JAXL

        我们网站要用到即时通讯,选择了OPENFIRE 当做服务器。

        OPENFIRE实现了XMPP部分协议。通过发送xml标签进行和服务器的交互。

        前端采用的是strophe  。开发过程中,发现假如新开一个页面,会把其他页面的session顶掉,需要在openfire添加一条系统属性

    route.all-resources  true

     这样其他页面既不会掉线,也实现了消息的分发同步。缺点是比较消耗服务器资源,新开一个页面就发起一个新连接,其他解决方案也试过,不能解决这个问题,strophe的attach方法不实用。

       开发过程中,刚开始我把所有逻辑都写在前端的,聊天室创建和加入,PubSub节点的创建和加入,消息提醒的发送。

      而strophe是依赖于flash的,假如客户端没有flash就会影响其他用户后续使用,所以把接受消息用strophe,发送、创建放在后端才合理。

      strophe使用过程中注意添加的监听事件想要每次都执行,必须return true.

      后端采用的是JAXL这个插件,看着不错,开发起来发现调试错误文不对题,只能一行行注释查看。最好把它的日志记录方式改改,还有异常也得改改,方便调试。

      JAXL还有个问题,使用send方法的时候,有些生成的xml标签明明正确的也报错,这时候最好使用send_raw,发送的xml标签也是字符串的,不要使用JAXL的函数生成的,一是很麻烦,而且还有可能出现莫名其妙的错误。

       事件开发中主要是看XMPP协议文档,出现问题找谷歌、stackoverflow,中文的基本上找不到答案。

       本来想好要写的东西很多,结果发现能写下来的就这么些有点乱,想到哪儿写到哪儿,代码细节的东西太多,就不贴了。前后差不多1一个月,即时通讯这块搞的差不多了。

      有问题可以留言。

  • 相关阅读:
    备忘录
    中缀表达式转为后缀表达式
    未出现的最小正整数
    摩尔投票算法
    两个等长升序序列找中位数
    Morris二叉树遍历
    2020牛客寒假算法基础集训营5 街机争霸
    2020牛客寒假算法基础集训营5 牛牛战队的比赛地
    2020牛客寒假算法基础集训营2 求函数
    2020牛客寒假算法基础集训营2 建通道
  • 原文地址:https://www.cnblogs.com/steptoupper/p/2862603.html
Copyright © 2011-2022 走看看