我写的你所指的帖子主要是关于创建浅层朋友图和状态提要的模式,但你可以很容易地将其调整为聊天。
对于聊天,您可以在这里学习模式:http://scalabl3.github.io/pubnub-design-patterns/2015/03/05/Inbound-Channel-Pattern.html
如果群聊有小群,Inbound 模式效果很好,我会说群聊中少于 5-7 人。它确实不适用于较大的团体,例如。 50 人,因为您要针对您发送的每条聊天消息发布到每个用户的入站频道。对于较大的群组,群聊本身应该有自己的频道。你是对的,如果你参与了大量的大型群聊,你将不得不检索每个群聊的历史记录,每个群聊都是一个 API 调用。如果聊天更多的是 1-1 或小组,那么 Inbound 模式可以更轻松地获取历史记录。
合并这两种模式意味着您将使用 cg-user-[uid]-status-feed(也可能想称它为不同的名称,命名约定当然可以是您自己的,也许 cg-user-[uid] -chats),但放入入站频道+任何更大的群聊频道。
历史记录仍以每个频道为基础,因此您将获得针对任何 1-1 或小型群聊的 Inbound 的历史记录,然后获取用于较大群聊的任何频道的历史记录。
更具体地说是您的问题:
GP1 和 GP2 都是小组,因此通过入站通道向每个用户发送任何聊天消息更简单,在每个单独的组中,在 JSON 有效负载中,您还将包含如下元数据:
Message to GP1 from User A
{
group_chat: "GP1",
from: "A",
to: "A,B,C",
timestamp: 1443112089,
message: "hey guys, good morning"
}
Message to GP2 from User E
{
group_chat: "GP2",
from: "E",
to: "A,D,E",
timestamp: 1443112192,
message: "I'm going afk for a bit, time for the gym"
}
此消息将发布 3 次,针对用户 [GP1: A,B,C, GP2: A,D,E] 的每个入站通道发布。通过该元数据,您可以获得所需的信息,以便在您的 UI 中确保将收到的消息放入正确的 UI 容器中,即 GP1 和 GP2 的群聊。
如果您还有其他问题,请告诉我...