为单个用户支持多个窗口 - 使用strophe.js进行XMPP聊天

问题描述 投票:0回答:3

我有一个可以合并到多个主机的聊天客户端,聊天客户端是独立的。

用户A登录两个位置 - 比如chrome和firefox

因此用户A发送消息用户B,用户B接收消息,双方显示聊天消息。

现在用户A也在单独的浏览器中登录窗口,我想推送消息并在此处显示消息

就像您在多个浏览器中打开Gmail聊天窗口一样,然后在两端推送已发送的消息。

xmpp strophe
3个回答
0
投票

XMPP协议将JID定义如下:

KID由三个主要部分组成:

节点标识符(可选)域标识符(必需)资源标识符(可选)JID编码为UTF-8。首先会提出一个语法,然后是具体的澄清和进一步限制的评论。

或者用简单的语言建立JID:[email protected]/Resource

一个用户可以拥有许多资源,例如:

  • PRA山体洒和你@domain.com/phone
  • PRA山体洒和你@domain.com/Firefox
  • PRA山体洒和你@domain.com/chrome

只需每次为用户设置正确的资源,让XMPP服务器负责其余的工作。

and you can look at this post看看如何用strophe做到这一点

你可以在这里阅读更多相关信息:qazxsw poi


0
投票

我正在使用消息碳。 strophe提供了一个插件。 - strophe碳


0
投票

我已经实现了使用消息碳。 XEP给予https://xmpp.org/extensions/xep-0029.html。为此,您需要检查服务器是否支持此XEP。大多数服务器,Ejabberd,MongooseIM,Openfire等都支持扩展。服务器将消息carbon转发到每个资源。在服务器中启用消息碳之后,您只需要处理从JID的每个资源转发给您的节。

假设用户A和用户B的JID是[email protected][email protected],您使用下面的完整JID登录chrome和firefox:

现在,当您开始从chrome向用户B发送消息时,该消息将被发送到您的XMPP服务器,然后该消息也会将相同的消息转发到您的Firefox浏览器。让我们说如果从chrome发送的原始消息节如下:

here

您应该在Firefox中收到转发的节,如下所示:

<message xmlns='jabber:client'
     from='[email protected]/chrome'
     to='[email protected]'
     type='chat'>
 <body>What man art thou that, thus bescreen'd in night, so stumblest on my counsel?</body>
  <thread>0e3141cd80894871a68e6fe6b1ec56fa</thread>
</message>

您需要从转发的节中提取原始消息。另请注意,您可以将每个浏览器选项卡用作单独的资源。您可能还希望配置服务器一次可为用户处理的最大资源数。

© www.soinside.com 2019 - 2024. All rights reserved.