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一个月,即时通讯这块搞的差不多了。

      有问题可以留言。

  • 相关阅读:
    C语言中 指针和数组
    C语言中 指针与结构体
    void指针、NULL指针和未初始化指针
    C语言中 指针、引用和取值

    别--------
    快速开发 jQuery 插件的 10 大技巧(转)
    采用预取(Prefetch)来加速你的网站(转)
    HttpWatch工具简介及使用技巧(转)
    iScroll框架的使用和修改
  • 原文地址:https://www.cnblogs.com/steptoupper/p/2862603.html
Copyright © 2011-2022 走看看