我使用ActionCable实现了聊天功能。我现在正在尝试基于README中用户外观的实现来实现状态。
本文档提及以下声明:
当我们在下面显示a时,会调用#subscribed回叫 启动客户端订阅。在这种情况下,我们接受 有机会说"目前的用户确实出现了#34;。那 出现/消失API可以由Redis或数据库支持 无论如何。
我可以在我的数据库中实现在线属性,并在应用程序收到显示/消失通知时更新它。但我不能保证这个属性的可靠性。例如,如果服务器出现故障,它可能会失去同步。
我怎样才能以可靠的方式实现这一点?
答案 0 :(得分:1)
将其置于Redis结构中,该结构在一定时间内到期(使用TTL)。如果将它存储在某个地方无限长时间(如数据库),它可能会失去同步。您可能会争辩说,您可以在应用程序启动时将所有用户状态设置为false,但这只会在您运行多个服务器或工作程序之前有效。用户连接时:每隔几分钟将此用户的状态值插入Redis。还处理连接关闭事件以从Redis中删除用户状态,准确度高于几分钟。