我正在尝试使用nodejs和websockets实现推送通知服务器。我试图实现的服务器需要能够发送特定于应用程序中的每个用户的通知(例如:人A评论你的帖子等…)。该服务器还可以为许多应用程序提供服务。因此,使用该服务的用户数量非常高。
问题是我如何管理这些渠道。我在网上做了一些研究,找不到一个可靠的解决方案。这个问题也提出了类似的问题。但没有可靠的答案。
我想到的一种实现方法是,为每个用户提供一个通道,那么它可能无法很好地扩展到服务许多用户。
我想到的另一种方法是将相同的消息组织成组,然后为组创建频道。那么缺点是登录的用户需要订阅多个频道,而且可能有许多只包含一个用户的组。另一方面,分组过程也会影响效率。
我的问题是什么是有效的方法来处理这个问题。你能给我解释一下吗?非常感谢任何帮助。谢谢。我想到的一种实现方法是,为每个用户提供一个通道,那么它可能无法很好地扩展到服务许多用户。
这取决于如何实现通道(主题、主题)。如果每个通道订阅都会产生一个新的持久连接,那么这就不能很好地扩展。然而,如果通道在协议级别表示,那么您将受益于每个客户端有一个连接,并且该技术将处理通道上的消息路由到适当的客户端。
我的问题是什么是有效的方法来处理这个问题。你能给我解释一下吗?非常感谢任何帮助。谢谢。
所以,如果你使用在单个连接上实现PubSub的解决方案,扩展就不是一个问题(或者不会很快成为一个问题),你可以让每个用户订阅他们自己的通知通道。在我看来,这是解决这个问题的最佳方法,也是常见的做法。
既然你在看Node.js,你可以看看Faye -参见订阅频道。您也可以查看托管服务,例如Pusher(我为其工作)-参见:Pusher channels。
Web PubSub安全性
接下来要考虑的是安全性:如何阻止任何客户端订阅通道。Faye文档提供了一个很好的安全概述,包括问题的解决方案。
push使用了用户认证机制和私有通道,这也为这个问题提供了一个可靠的解决方案。