2010-09-24 70 views
0

我有一個GChome擴展,它偵聽XMPP服務器。 我使用Strophe進行BOSH連接。 問題是「我應該如何處理連接?」從XMPP核心維基,我發現最後一個連接/優先級的客戶端接收消息。當用戶從其他地方登錄時,分機停止接收消息。我怎樣才能管理這種連接缺席。我希望這個問題不是很含糊=)。保留一個XMPP連接

+0

r place「,用戶是否使用與Extension一模一樣的資源登錄?按照設計,XMPP每個用戶PER資源只允許1次登錄(如果你在兩個不同的地方登錄爲不同的資源,它就可以工作)。但是,XMPP服務器的管理員有能力強制用戶只能登錄到XMPP服務器 - 一切取決於配置。 – DashK 2010-09-24 11:30:16

回答

0

確保您爲每個連接使用不同的資源。要做到這一點,最簡單的方法是讓服務器產生的資源名稱,如RFC 3920bis, section 7.5規定,由具有客戶端發送:

<iq id='tn281v37' type='set'> 
    <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/> 
</iq> 

,看服務器與全所產生的Jabber ID迴應:

<iq id='tn281v37' type='result'> 
    <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'> 
    <jid> 
     [email protected]/4db06f06-1ea4-11dc-aca3-000bcd821bfb 
    </jid> 
    </bind> 
</iq> 

請記住,服務器可能會強制執行資源的最大數,那麼你可能會得到一個錯誤:當你提到「用戶正在從行吟詩人登錄

<iq id='wy2xa82b4' type='error'> 
    <error type='wait'> 
    <resource-constraint 
     xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> 
    </error> 
</iq>