3

我正在尝试使用 nodejs 和 websockets 实现推送通知服务器。我尝试实现的服务器需要能够发送特定于应用程序中每个用户的通知(例如:人 A 对您的帖子发表评论等......)。服务器还可以为许多应用程序提供服务。因此,使用该服务的用户数量非常多。

问题是如何管理频道。我在互联网上做了一些研究,但找不到可靠的解决方案。这个问题也 了类似的问题。但没有可靠的答案。

我想到的一种实现方式是,每个用户有一个频道,那么它可能无法很好地扩展到为许多用户提供服务。

我认为的另一种方法是将相同的消息组织成组,然后为这些组创建频道。然后缺点是登录用户需要订阅多个频道,并且可能有许多组只包含一个用户。另一方面,分组过程也影响效率。

我的问题是处理这个问题的有效方法是什么。你能给我一些见解吗?任何帮助是极大的赞赏。谢谢。

4

1 回答 1

2

我想到的一种实现方式是,每个用户有一个频道,那么它可能无法很好地扩展到为许多用户提供服务。

这取决于渠道(主题、主题)是如何实现的。如果每个频道订阅都会产生一个新的持久连接,那么这将无法很好地扩展。但是,如果通道是在协议级别表示的,那么您将从每个客户端一个连接中受益,并且该技术将处理通道上的消息仅路由到适当的客户端。

我的问题是处理这个问题的有效方法是什么。你能给我一些见解吗?任何帮助是极大的赞赏。谢谢。

因此,如果您使用通过单个连接实现PubSub的解决方案,那么扩展就不是问题(或者不会很快成为问题),并且您可以让每个用户订阅他们自己的通知频道。恕我直言,这是解决此问题的最佳方法,也是常见做法。

由于您正在查看 Node.js,因此您可以查看 Faye - 请参阅订阅频道。您还可以查看托管服务,例如 Pusher(我为之工作) - 请参阅:Pusher 频道

Web PubSub 安全性

下一个考虑因素是安全性:如何阻止任何客户端订阅频道。Faye 文档提供了一个很好的安全概述,包括问题的解决方案。

Pusher 使用用户身份验证机制私有通道,这也为这个问题提供了可靠的解决方案。

于 2013-01-21T12:20:47.547 回答