3

我希望使用 xmpp 在我的应用程序中包含两个功能。第一个是几乎完成的一对一聊天(使用 strophe),第二个是实时通知,就像它在 facebook 中的工作方式一样。我试图了解 xmpp 中的 pubsub 系统,但觉得它不适合这个特定问题。如有错误请指正,可能是由于没有正确理解概念。我的要求是 - 将有任何用户可以触发的预定义事件,当一个用户触发时,其他在线的人应该收到相同的通知。此外,我还想检查用户是否喜欢在发送通知之前接收通知。我在这里没有得到的是,如果要使用 pubsub,节点在哪里以及如何适合。我可以只创建一个其他人都订阅的节点吗?在这种情况下,订阅者将如何在不成为节点所有者的情况下在其上发布他们的事件?

我正在考虑的另一种方法是使用标题类型或附加有效负载将消息逐个发送给所有用户的jid,以将<notif/>其与普通消息区分开来。这种方法是否可以考虑可扩展性?

4

4 回答 4

1

您尝试使用 xmpphp 库执行的操作,即在需要时向多个 jid 发送消息,是 pub-sub 或 MUC 可以为您执行的操作。:D 因此,根据您的应用程序类型,您需要选择一个并继续尝试使用 xmpp,随着您的继续,事情应该会变得清晰......

于 2010-09-07T20:51:52.667 回答
1

PubSub 可以工作,但是,您所描述的感觉更像是MUC(多用户聊天)。

基本上,它创建了一个您的访问者可以加入的聊天室(可能不使用这种措辞),然后,当他们中的任何一个人感应到聊天室的消息时,他们都会得到它。您当然可以进行配置,只允许某些用户发布。

由于您已经在浏览器上运行了一个客户端,使用 Strophe,它应该相当容易。只需确保此MUC 组件在您的服务器上运行即可。

于 2010-09-07T12:23:52.340 回答
1

要回答关于实时通知的第二个问题,您需要使用 PEP 而不是 pubsub。两者之间的主要区别在于PEP只会发布给您名册中的人,我认为这是您想要的。此外,我认为 PEP 比 pubsub 得到更广泛的支持,或者至少 jabber.org 支持它。PEP 的唯一问题是它需要实体能力支持。

我在这里写过博客。示例在 Java 中;希望你不会反对它;-)

于 2010-09-08T03:25:47.017 回答
0

对于这种情况,Pubsub 将是一个合适的解决方案。从我所见,它可以满足您的所有要求。如果您希望用户对每种消息类型进行不同的订阅,则需要为每种事件类型设置一个节点(或者可以在单个节点上使用过滤器,但我认为多个节点更容易)。节点所有者可以允许任何人发布到节点,所以这不是问题。

提到了 PEP,但如果您想向不在您名册中的用户发布,则不是正确的解决方案。

如果消息传输的简单行为足以提供足够的信息,Pubsub 还允许您定义任何您想要的消息内容类型或根本不定义。

于 2010-09-15T14:40:32.523 回答