我正在使用Firebase / AngularFire构建聊天模块。 我必须在多个设备上跟踪用户阅读消息,并将其显示为用户的未读消息数。 用户可以进行多次对话,每次对话仅在两个用户之间进行。 可以在多个选项卡或多个设备上打开相同的对话。即用户可以在多个设备/标签上的同一对话页面上连接。
当用户进入对话页面时,会增加用户身份中连接的用户的计数器:conversation:conversationId:userId:count:5(numberOfOpenConversaitonPlaces)这显示用户在多个设备上为同一个对话打开了多少个窗口。 当用户离开/关闭对话页面减量计数并删除参考如果Count = 0此时我们知道用户没有任何打开的页面与对话。 这表示用户是否已连接/断开任何设备或窗口上的对话。 如果用户具有用于打开对话标记的条目,则将所有发送给用户的消息读取/看到 用户连接到会话后,可以看到所有内容中的消息
这是正确的吗?我应该根据用户是否在一个甚至可能无法使用的窗口中打开对话来更新所有消息是否被看到?或者我不应该基于打开的聊天窗口进行更新,只有当用户在窗口上处于活动状态时才更改状态?如何在多个窗口/设备上管理它?在这种情况下有没有办法使用.info / connected?
{
"conversations" : {
"conversationID1" : {
"dateCreated" : "",
"messages" : {
"messageID1" : {
"sentDateTime" : "",
"content" : "",
"sentTo" : "",
"sentBy" : "",
"seen" : false
},
"messageID2" : {
"sentDateTime" : "",
"content" : "",
"sentTo" : "",
"sentBy" : "",
"seen" : false
}
}
}
},
"userstatus" : {
"conversations" : {
"conversationID1" : {
"userID1" : {
"count" : 5
},
"userID2" : {
"count" : 3
}
}
}
}
}