我有一个电子商务网站,我想使用ably.io在客户之间实现消息传递解决方案。我是ABLE.io和pub/sub消息模式的新手,需要一些建议才能使我走上正确的轨道。
假设我的网站上有75,000个用户。用户可以创建广告...如果任何人对广告感兴趣,他们应该能够向广告客户发送消息。
这是阅读able的文档后想到的解决方案:
由于我有75,000个用户,因此我创建了75,000个频道,每个用户1个频道。
名为Brian的用户在网站上创建了一个广告。 Brian订阅 BrianChannel 来接收自己频道上的所有消息。现在,艾米和汤姆已经看过Brian的广告并想与他联系,他们在 BrianChannel 上发布了一条消息,而Brian会收到消息。
我不确定上述解决方案是否正确?
如果上述解决方案是正确的方法,那么我还有两个问题:
让我们的Brian使用JavaScript订阅 BrianChannel 。现在Brian显然不是24/7全天候在线-当他离线时我应该如何处理他的消息?
我的网站上注册了75,000个用户。在任何时间点都有5,000个用户在线。在这5000个在线用户中,有20个用户实际上是在互相发送消息。使用上面的解决方案,我应该为所有在线用户拥有5,000个活跃频道...是否可以减少活跃频道的数量?也许通过定期轮询频道?
答案 0 :(得分:2)
这是Ably的Dev Advocate Srushtika。
您的方法是正确的,实际上是最常用的方法。也就是说,您的75,000个用户中的每个用户都有自己的频道,只有他们才能订阅。任何其他希望向他们发送消息的客户,都将附加到“他们的”频道并向其发布消息。由于所有用户始终都订阅了他们自己的频道,因此他们将能够接收任何针对他们的消息。
如果您的任何订阅者客户端在发送消息时都不在线,则默认情况下,Ably的Realtime平台会将其保留2分钟,之后,如果订阅者客户端仍处于离线状态,邮件将被丢弃。但是,使用Persisted History功能,您可以将保留邮件的时间增加到24-72小时。
不幸的是,截至目前,Ably还没有提供一种机制,可以在客户端仍处于联机状态时从没有活动的频道中分离出来。但是,此功能即将推出。请密切注意我们发布所有此类更新的Engineering blog。
希望能回答您的问题。