保留 XMPP 连接

Posted

技术标签:

【中文标题】保留 XMPP 连接【英文标题】:Preserving an XMPP connection 【发布时间】:2010-09-24 11:21:53 【问题描述】:

我有一个监听 XMPP 服务器的 GChome 扩展。 我使用 Strophe 进行 BOSH 连接。 问题是“我应该如何处理连接?”从 XMPP 核心 wiki 中,我发现最后一个连接/优先级客户端接收消息。并且当用户从其他地方登录时,扩展程序停止接收消息。我该如何管理这种连接缺失。我希望这个问题不是很模棱两可=)。

【问题讨论】:

当您提到“用户从其他地方登录”时,用户是否使用与扩展完全相同的资源登录?按照设计,XMPP 只允许每个用户每个资源 1 次登录(如果您在 2 个不同的地方作为不同资源登录,它会起作用。)但是,XMPP 服务器的管理员可以强制用户只能登录到XMPP 服务器一次 - 这完全取决于配置。 【参考方案1】:

确保为每个连接使用不同的资源。最简单的方法是让服务器生成资源名称,如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>
      juliet@im.example.com/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>

【讨论】:

以上是关于保留 XMPP 连接的主要内容,如果未能解决你的问题,请参考以下文章

Xshell如何设置,当连接断开时保留Session,保留原文字

putty 远程连接工具保留操作日志

每个用户只保留一个活动连接

Oracle - 更新连接 - 非键保留表

Oracle - 更新连接 - 非键保留表

是否可以在 dplyr 中进行完全连接并保留连接中使用的所有列?