爲何XMPP?

爲何XMPP?

在研究XMPP與紅隼利用激勵因素是被終止虛擬機的問題不做任何清除或信號,機器將離開泳池。XMPP提供用於肯定是否一個機器被鏈接到池的基礎設施。它也提供了用於共享鏈接的機器(空閒,忙碌等)的狀態的一種機制。html

爲研究IM協議的推進力來自讀取僵屍網絡的一個共同特色是使用IRC用於指揮和控制通訊。web

什麼是XMPP?

XMPP表明ê 點¯x tensible 中號 essaging和P resence P rotocol,郵局,它是接受了由IETF在2004年標準(RFC 3920RFC 3921)。安全

實現鏈接

一般狀況下,TCP可用於XMPP客戶端和服務器之間的基本鏈接,但HTTP能夠用做阱(BOSH)。因爲鏈接與客戶端實體和客戶端的客戶端鏈接始發都沒有用,NAT穿越是否是一個問題。服務器

安全

XMPP指定實現必須使用TLS和SASL。網絡

XML

該協議的工做原理是流兩個XML文件發送接收XML節。XML節是一個messagepresenceiq。在messagepresence節有關用戶的身份發送任一用戶的內容或信息(空閒,忙碌等)。該iq節用於查詢使用的get / set操做XMPP服務器。session

該JID

的JID是對於系統中的每一個客戶端的標識符和相似電子郵件地址。每一個JID能夠由用戶名,域和資源。格式爲:username@domain/resource。服務器自己能夠只用域來處理。由於用戶能夠具備對服務器在任何給定的時間打開的多個鏈接,該資源份量被用於區分它們。發送到一條消息username@domain將被髮送到來自該用戶的全部鏈接。然而,消息發送到username@domain/resource將只發送到特定鏈接。架構

服務器聯盟

XMPP能夠在服務器之間互操做相似於如何SMTP便可。發送給JID在不一樣域的消息將被髮送到交付該域。app

咱們如何使用XMPP?

XMPP所提供的基礎設施已經相匹配的設置,咱們的機庫的需求。咱們可使用的JID來標識每一個機器,以及每一個核心若是咱們使用JID資源標識符。裝卸機忽然從池中的降低也已經提供給咱們。框架

下一步驟是建立用於實際茶隼應用的架構。有兩種方法能夠作到這一點:茶隼實現做爲XMPP客戶端機器人,或者實現紅隼做爲XMPP服務器組件。在這兩種狀況下,咱們將有建立的機器上使用一個客戶端漫遊。dom

客戶端BOT只是一個XMPP客戶端是一個程序,而不是我的用戶。機器人能夠發送和接收消息,對他們做出相應的反應。

服務器組件有兩種形式:內部和外部。內部組件實際增長的服務器代碼自己使用提供的插件API。這樣的部件能夠由服務器的許可的限制,尤爲是當它是GPL的軟件。外部組件與服務器分開的程序和使用標準協議(它通訊XEP 0114),所以不依賴於任何特定的服務器實現。

在有實際的業務邏輯方面的客戶端漫遊和組件之間只有細微的差異。主要的區別是可擴展性 - 組件沒有處理名冊,這多是資源的大量流失時,名冊變大。由於咱們想紅隼,以便可以同時管理幾千元的機器,使用組件將是實現目標。然而,咱們能夠用一個簡單的客戶端漫遊開始到API和後來過渡充實到組件一旦API是更穩定。

可用的實現

有幾個可用的XMPP服務器實現,幾乎全部的人都在GPL下提供的。最流行 ​​的是jabberd2ejabberd。Jabberd2是用C語言編寫,並ejabberd是寫在二郎山。Ejabberd是目前最流行 ​​的XMPP服務器實現。

有對XMPP提供(幾Python庫xmpppyPyXMPP)。Xmpppy是在GPL下提供,並PyXMPP是LGPL下提供的。

此外,扭曲的Python除了與框架Wokkel提供使用MIT許可證的XMPP服務器和客戶端庫。

資源

相關文章
相關標籤/搜索