XMPP作為乙個工具的意義

2022-02-13 03:04:53 字數 859 閱讀 5939

伺服器:為xmpp節提供路由,是否支援server-server通訊也是很重要的特性,常見的服務有openfire,tigase,m-link等

客戶端:一般為人類驅動的實體,也可以是自動化的機械人實體(聊天機械人)

元件:xmpp擴充套件(xep-0114)使用該擴充套件協議可以實現服務實現無關的擴充套件,元件作為伺服器內部可單獨定址的實體

外掛程式:特定服務實現下的擴充套件,不大可能會移植

jid:格式     節點@域/資源  

xmpp通訊是以xml為基礎,研究xmpp協議的話必須要了解他的一些基礎元素和屬性

xmpp流由兩份xml組成,通訊的每個方向都有乙份,根元素為stream:stream

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

presence 相關出席資訊

message 訊息

iq 資訊與查詢

以前更新資料使用定時重新整理,使用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

xargs工具將乙個命令的輸出作為另乙個命令的引數

xargs是乙個非常強大的命令,可以將乙個命令的輸出,作為另乙個命令的引數。這個非常有用,舉例如下 例項1 cat url list.txt xargs wget c 例項2 找出所有的.jpg格式的,並將其歸檔,即打包。詳解find命令,find和grep不同,find是在linux檔案系統中查詢...

C 中乙個函式作為作為另乙個函式的引數

把函式名作為引數就是函式的位址了.要將函式名作為引數,需要使用函式指標。函式指標的定義格式為 ret type var name arg list 表示返回值為ret type,引數列表為arg list的函式指標var name.如int p int,int 表示返回值為int,引數為兩個int型...

作為乙個技術女

轉眼出差已經三個月,這期間記憶總是辛酸和自憐。當初義無反顧的不想搞 跳槽,乙個之後又鐵了心回頭好好學技術。2013年對我來說是特殊的一年,不管是感情還是工作還是對於自己未來的乙個規劃,都出乎意料卻又冥冥之中像是我不得不走。工作中學習了很多新的知識,以前從來沒有用過的。同事性格都蠻好,所以我學習起來工...