聊天应用程序 - 当有人进入/离开房间时,用声音通知用户
Chat application - Notify users with sound when someone enters/leaves the room
我调整了Firebase聊天应用程序(快速入门导师中提供的那个)并向其添加了用户状态信息,即当任何用户进入或离开房间时,都会向其他用户显示一条消息。 例如:用户 A 已加入。
现在,我正在尝试在用户离开或进入房间时将声音通知添加到应用程序中。我正在使用ngAudio
模块来执行此操作。但是,到目前为止,我无法实现此功能。
目前,我已经尝试过了。我正在使用浅表来继续检查chatstatus
数组
$scope.$watchCollection('chatstatus', function (newVal, oldVal) {
if ($scope.chatstatus[$scope.chatstatus.length-1].status.indexOf("joined") > -1) {
$scope.joinedplay.play();
}
else{
$scope.leftplay.play();
}
});
但是当我这样做时,只有登录用户会收到声音通知,而不是其他人(很明显,因为控制器只为他执行)。
我还尝试使用 ngRepeatFinished 指令(在显示列表的最后一个元素时触发声音通知)。但这也行不通。
我为此制作了一个 Plunker,我完全希望我的应用程序的行为与这个 plunk 的行为一样。
在两个不同的选项卡(或浏览器)中打开 plunk,并与两个用户一起加入聊天室。当两个用户中的一个加入/离开时,另一个用户将获得alert
。这是有效的,因为我们将访问相同的 plunk。
但是如何实时实现这一目标呢?
注意:我在上面的示例中使用了alert
而不是音频,因为它更容易演示。
我找到了解决方案。使用Firebase.on()
解决了问题。https://www.firebase.com/docs/web/api/query/on.html
statusref.on('child_added', function(childSnapshot, prevChildKey) {
var postsData = null;
postsData = childSnapshot.val();
logResults(postsData);
});
function logResults(postsData) {
if (postsData.status.indexOf("joined") > -1) {
$scope.joinedplay.play();
}
else{
$scope.leftplay.play();
}
}
相关文章:
- 离开页面时弹出消息
- 离开页面导航后保留文本区域内容
- 当主导航离开视图时,为粘性导航应用样式
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 将到达日历中的2天添加到离开日历中
- 定时Ajax进程在用户离开页面后继续
- 在离开Aurelia.js上的页面之前,我如何要求用户进行确认
- 正在阻止用户使用“window.oneforeunload”导航离开
- 如何在离开标签时停止在标签中播放紫藤视频
- 在放置目标时,输入并离开自定义事件
- 如何在视图中保存用户输入内容,并在离开页面时对控制器进行后期调用
- 如何在按住鼠标按钮且光标在视口外时检测鼠标离开
- Socket.io房间不工作/没有意义
- 如果鼠标离开父对象,则隐藏元素
- 在你离开之前,这个网站如何显示一个整洁的HTML框
- 如果用户选择离开网页,如何删除记录
- Socket.io - 离开房间时延迟
- 聊天应用程序 - 当有人进入/离开房间时,用声音通知用户
- socket.io消息仍然在广播,即使客户已经离开了房间
- 是否可以监听房间的加入和离开事件?