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一個月,即時通訊這塊搞的差不多了。

  有問題可以留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM