保留一个XMPP连接
问题描述:
我有一个GChome扩展,它侦听XMPP服务器。 我使用Strophe进行BOSH连接。 问题是“我应该如何处理连接?”从XMPP核心维基,我发现最后一个连接/优先级的客户端接收消息。当用户从其他地方登录时,分机停止接收消息。我怎样才能管理这种连接缺席。我希望这个问题不是很含糊=)。保留一个XMPP连接
答
确保您为每个连接使用不同的资源。要做到这一点,最简单的方法是让服务器产生的资源名称,如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>
r place“,用户是否使用与Extension一模一样的资源登录?按照设计,XMPP每个用户PER资源只允许1次登录(如果你在两个不同的地方登录为不同的资源,它就可以工作)。但是,XMPP服务器的管理员有能力强制用户只能登录到XMPP服务器 - 一切取决于配置。 – DashK 2010-09-24 11:30:16