angular - 使用 firebase cloud pub/sub 在聊天应用程序中实现 "Someone is typing..."功能

标签 angular firebase firebase-realtime-database chat google-cloud-pubsub

我已经移植了网页版的friendlychat Angular 4 套件的示例。你可以看到我的直播over here它似乎工作正常...我将很快将其开源。

现在我想实现一个功能,当用户 A 开始实时打字时,用户 B 应该看到“用户 A 正在打字......”消息。当用户 A 停止输入时,该消息应该消失。显然,如果用户 A 自己正在打字,则他不应该看到该消息。

我正在考虑在数据库中拥有一个对象,如下所示:

{
  "isTyping":true,
  "fromDeviceToken": "xxxx"
}

...然后使用 firebase realtime 更改 isTyping 字段。

关于如何实现这一目标,有更好的想法吗?有任何意见/改进吗?

我的主要问题是,

Firebase 云可以 pub/sub trigger用于在不将输入状态保留在数据库中的情况下执行此操作。如果是这样,怎么做?

最佳答案

如果用户 A 在打字期间连接丢失,则状态将始终保持 true,直到他恢复连接。要解决此问题,您可以在 firebase 对象中添加一个 DateTime 字段。假设lastTypedCharacter 并存储DateTime 并在用户A 键入任何内容时每秒更新它。当向其他用户 B 显示将 LastTypedCharacter DateTime 与当前时间匹配时,如果它小于 5 秒,那么您可以假设用户 A 不再输入

关于angular - 使用 firebase cloud pub/sub 在聊天应用程序中实现 "Someone is typing..."功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43269778/

相关文章:

javascript - 如何在 Angular 2 中为 jwt token 设置 cookie

javascript - angular material 两个复选框,一次只能勾选一个

javascript - 通过 jQuery 将来自 Firebase 的图像设置为 div 的背景

javascript - angularFire 从嵌套对象中获取 $id

ios - 如何防止不断从 Firebase 下载图像并显示图像,即使没有互联网连接?

javascript - 在 firebase 中将数据存储到多个引用的最有效方法是什么?

javascript - 函数返回未定义、预期的 Promise 或值

javascript - 如果 Iframe 无法加载 Angular 中 src 处的资源,如何显示替代文本

Angular2/Nativescript : Issues converting a service that used to use LocalStorage to one that uses nativescript-application/settings

javascript - Firebase Auth - 最近登录多长时间