XMPP做爲一個工具的意義

  • 學習XMPP就是擁有位當前應用程序添加實時,推送,社交功能所需的工具。雖然瀏覽器不支持XMPP通信,可是咱們能夠經過BOSH技術解決。
  • 一個XMPP網絡包含以下

服務器:爲XMPP節提供路由,是否支持server-Server通信也是很重要的特性,常見的服務有openfire,tigase,m-link等web

客戶端:通常爲人類驅動的實體,也能夠是自動化的機器人實體(聊天機器人)跨域

組件:XMPP擴展(XEP-0114)使用該擴展協議能夠實現服務實現無關的擴展,組件做爲服務器內部可單獨尋址的實體瀏覽器

插件:特定服務實現下的擴展,不大可能會移植服務器

 

  • XMPP尋址

JID:格式     節點@域/資源  網絡

  • XMPP節

XMPP通信是以XML爲基礎,研究XMPP協議的話必需要了解他的一些基礎元素和屬性工具

xmpp流由兩份xml組成,通信的每一個方向都有一份,根元素爲stream:stream學習

子元素爲可路由的節點和與流相關的頂級元素,通用元素spa

presence 相關出席信息插件

message 消息server

iq 信息與查詢

 

  • XMPP鏈接的生命週期 具體能夠看標準協議RFC-6120
  • 如何在web中使用xmpp

之前更新數據使用定時刷新,使用AJAX改善了體驗,實質上沒有變化。咱們可使用長輪詢技術(客戶端向服務器發送Ajax請求,服務器接到請求後hold住鏈接,直到有新消息才返回響應信息並關閉鏈接,客戶端處理完響應信息後再向服務器發送新的請求,ie上用iframe,別的瀏覽器用xhr來實現)達到更實時的更新效果。XMPP中這種技術,被稱之爲BOSH,其實Comet和反向http也是相似的東西。不少xmpp服務器中內置該功能,也有單獨的BOSH鏈接管理服務BOSH幫助http客戶端創建一個新的XMPP會話,而後把XMPP節包裝到一個特殊的body元素經過http回傳,這樣一來http應用程序就能夠控制一個真正的xmpp會話,因爲長輪詢的高效率和低延遲,所以其效果和原生TCP鏈接差很少。

使用長輪詢技術須要使用js進行跨域訪問,目前咱們經過Strophe的JS類庫實現了輕鬆優雅的在http下訪問xmpp

相關文章
相關標籤/搜索