保留一个XMPP连接

问题描述:

我有一个GChome扩展,它侦听XMPP服务器。 我使用Strophe进行BOSH连接。 问题是“我应该如何处理连接?”从XMPP核心维基,我发现最后一个连接/优先级的客户端接收消息。当用户从其他地方登录时,分机停止接收消息。我怎样才能管理这种连接缺席。我希望这个问题不是很含糊=)。保留一个XMPP连接

+0

r place“,用户是否使用与Extension一模一样的资源登录?按照设计,XMPP每个用户PER资源只允许1次登录(如果你在两个不同的地方登录为不同的资源,它就可以工作)。但是,XMPP服务器的管理员有能力强制用户只能登录到XMPP服务器 - 一切取决于配置。 – DashK 2010-09-24 11:30:16

确保您为每个连接使用不同的资源。要做到这一点,最简单的方法是让服务器产生的资源名称,如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>