正在分离web应用程序上的用户数据快照侦听器



我有一个快照侦听器,用于侦听我使用Firestore存储的用户数据的实时更改。由于我正在开发一个聊天功能,听众在那里,因为我需要实时更新用户拥有的聊天Id列表,以防添加新的聊天。当用户断开连接或失去连接时,分离侦听器会出现问题。关于如何在不使用实时数据库中的onDisconnect方法的情况下实现这一点的任何建议,因为我不能用它调用detachListner()方法。

示例:

这是我的用户文档

{
name:"Brad"
avatar:"https://avatar.com"
chats: [
{
id: 1.,
member_name:"John",
avatar:""
},
{
id: 2.,
member_name:"John",
avatar:""
},
]
}

我在这个文档上有一个活动的快照侦听器,

let unsubscribeListener;
export const getChatSnapshot = (user_id, callback) => {
unsubscribeChatListener = onSnapshot(
doc(db, "users", user_id),
(doc) => {
callback(doc.data());
},
(error) => {
console.log(error.message);
}
);
};

当用户断开或关闭页面时,是否有方法断开侦听器。由于onDisconnect我只有设置、删除。。。

有这样的东西吗。

onDisconnect(userStatusDatabaseRef)
// call unsubscribeListener when user is disconnected.
// like unsubscribeListener()
.set(isOfflineForDatabase)
.then(() => {
set(userStatusDatabaseRef, isOnlineForDatabase);
});

如果您询问是否可以在用户断开连接后执行对Firestore的写入,类似于实时数据库的onDisconnect处理程序,答案是否定的。

Firestore使用与实时数据库不同的协议,该协议不允许检测第一个连接或断开连接。如果您需要Firebase中的这些功能,实时数据库是您唯一的选择。

请记住,您可以在同一应用程序中同时使用Firestore和实时数据库。事实上,有一个解决方案指南解释了如何在幕后使用实时数据库和云功能在Firestore上构建呈现系统。

相关内容

最新更新