方案是:某些用户向某些人发送消息。
我正在考虑为一个CLASS创建一个特定对话的ROW。在哪里,ROW包含诸如发送者姓名","接收者"等信息。并且我有列(PFRelation)将该特定行连接到另一个类,其中从用户到接收器的所有消息都将被保存(反之亦然)。
因此,每次用户开始新会话时都会执行此操作。
此前景的好处:
隐私,因为正在保存的唯一控件仅来自用户和接收器组。
这个预期的缺点:
我们都知道解析只能免费提供30reqs / s,这意味着1分钟= 1800 reqs。所以每次我创建一个新类来跟踪convo。我使用了很多请求吗?
在实现此信使库之前,我正在寻找理想方式的建议和想法。
答案 0 :(得分:1)
听起来你已经想出了一些类似于我以前使用的东西,在Parse作为后端的应用程序中实现消息传递。考虑用户界面如何查询数据也很重要。一般而言,确保读取数据非常简单快捷是最重要的。对于大多数社交应用,Facebook's engineering team on Haystack中的以下引用特别相关。
Haystack是我们设计用于分享照片的对象商店 Facebook一次写入数据,经常阅读,永不修改,以及 很少删除。
这里的关键信息是 一次编写,经常阅读,从未修改,很少删除 。无论您决定采用何种方法,在设计解决方案时都要牢记这一点。我在使用Parse实现消息传递系统之前使用的方法如下所述。
Message
类的每一行(对象)对应于已发布的单个文本,图片或视频消息。每个Message
都属于Group
。 Group
可以小到2 User
(私密对话),也可以根据需要增长。
RecentMessage
类是我提出的解决方案,可以快速轻松地填充UI。每个RecentMessage
对象对应于给定Group
可能属于的每个User
。 User
中的每个Group
都有自己的RecentMessage
对象,该对象使用beforeSave/afterSave cloud code triggers保持最新。每当创建新的Message
时,在afterSave触发器中我们都希望更新属于RecentMessage
的所有Group
个对象。
您的应用中很可能会有一个表格,其中会显示用户所属的所有会话。这可以通过查询所有用户的RecentMessage
对象轻松实现,这些对象已包含在选择时加载其余消息所需的所有Group
信息,并且还包含最新消息& #39;要在表格中显示的数据(因此名称)。或者,RecentMessage
可以包含指向最新Message
的指针,但我决定复制数据是一种有益的权衡,因为它简化了将来的查询。
Message
的文字的字符串)User
的{{1}}的指针)在您的应用中创建消息传递功能时,安全和隐私是必不可少的。请务必仔细阅读Parse Engineering安全博客文章,并花些时间将其全部放入:Part I,Part II,Part III,Part IV,{{3 }}
在我们的案例中,最重要的是描述ACL的第III部分,或Part V。 Message
个对象将具有与其所有成员Group
对应的ACL。 User
个对象将对其所有者RecentMessage
具有受限制的读/写ACL。 User
个对象将继承它们所属的Message
的ACL,允许所有Group
成员读取。我建议在afterSave触发器中禁用写入ACL,以便不能修改消息。
关于Parse和请求限制,您需要接受这样一个事实,即您将很快超过30 req / s免费套餐。作为一般经验法则,专注于构建最佳用户体验比关注过度可扩展性要好得多。总的来说,可伸缩性问题很少发挥作用,因为大多数应用程序都失败了。并不是说这是令人沮丧的 - 只是要记住一些事情,以防止你因为时间成本而陷入过度工程的陷阱:)